У меня есть очень досадное исключение, которое замораживает мое приложение, выброшенное WPF, когда содержание этого всплывающего окна, похоже, содержит много элементов.
В окнах вывода я вижу примерно 50 раз это исключение.
'System.Runtime.InteropServices.COMException'
произошло в UIAutomationProvider.dll
Тогда иногда после замораживания у меня есть это исключение:
ContextSwitchDeadlock был обнаружен
Сообщение: CLR не смог
переход из контекста COM 0x3bd0048
в контекст COM 0x3bd01b8 для 60
секунд. Нить, которой принадлежит
контекст назначения / квартира наиболее
скорее всего либо делает не качать ждать
или обрабатывает очень долго
работа без прокачки винды
Сообщения. Эта ситуация обычно имеет
отрицательное влияние на производительность и может
даже привести к тому, что приложение становится
не отвечает или использование памяти
накапливается постоянно с течением времени. к
избежать этой проблемы, все одиноки
Резьба в квартире (STA)
следует использовать прокачку примитивов ожидания
(например, CoWaitForMultipleHandles) и
регулярно качать сообщения в течение длительного
выполняющиеся операции.
Я не использую какой-либо компонент COM в своем коде, у кого-то уже была эта проблема?
Дедлок обнаружен отладчиком и не имеет трассировки стека.
Трассировка стека COM Exception:
{"Событию не удалось вызвать ни одного из
подписчики (Исключение из
HRESULT: 0x80040201) "}
в
System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal (Int32
errorCode, IntPtr errorInfo)
в
MS.Internal.Automation.UiaCoreProviderApi.UiaHostProviderFromHwnd (IntPtr
HWND)
Когда я звоню
popup.IsOpen = true