У меня очень раздражающее исключение, которое замораживает мое приложение, созданное WPF, когда содержание этого всплывающего окна, похоже, имеет много элементов. В выходных окнах я вижу примерно в 50 раз больше этого исключения.
'System.Runtime.InteropServices.COMException' произошел в UIAutomationProvider.dll
Затем иногда после замораживания у меня есть это исключение:
обнаружен ContextSwitchDeadlock Сообщение: CLR не удалось переход из контекста COM 0x3bd0048 к COM-контексту 0x3bd01b8 для 60 секунд. Поток, которому принадлежит контекст/квартира назначения вероятно, либо без ожидания перекачки или обработка очень долго работает работа без перекачки Windows Сообщения. Эта ситуация обычно имеет отрицательное влияние на производительность и может даже привести к тому, что приложение станет невосприимчивость или использование памяти постоянно накапливаясь с течением времени. к избегайте этой проблемы, все одиночные резьба по резьбе (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