COMException, когда я использую всплывающее окно в WPF

У меня очень раздражающее исключение, которое замораживает мое приложение, созданное 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

Ответ 1

Решение состоит в том, чтобы сделать Visibility = "Collapsed" на содержимом всплывающего окна, а не закрывать всплывающее окно, но оно немного взломано.

Ответ 2

Я столкнулся с той же проблемой. Я предполагаю, что это связано с монитором с поддержкой multitouch, подключенным к моему компьютеру. Когда я остановил службу ввода Tablet, ComExceptions исчезли. возможно, это вариант для вас тоже.

Ответ 3

Я исправил эту проблему, удалив планшет Wacom Pen и Touch и отключив службу ввода Tablet. Я столкнулся с этой проблемой с помощью всплывающих окон WPF (TogglePopups, Comboboxes и т.д.) И Expanders.