COMException, когда я использую всплывающее окно в WPF - PullRequest
11 голосов
/ 21 сентября 2009

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

Ответы [ 3 ]

4 голосов
/ 21 сентября 2009

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

1 голос
/ 05 января 2012

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

1 голос
/ 11 августа 2011

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

...