使用彈出我有一個非常惱人的例外,其凍結我的應用程序通過WPF,時拋出這個彈出的內容似乎有太多的元素。 在輸出窗口中,我發現這個異常大約有50次。收到COMException當我在WPF
'System.Runtime.InteropServices.COMException' 發生在UIAutomationProvider.dll
然後有時凍結後我有此異常:檢測
ContextSwitchDeadlock 消息:該CLR已經無法 過渡從COM上下文0x3bd0048 到COM上下文0x3bd01b8 60 秒。擁有 目標上下文/公寓的線程大多數爲 ,可能是執行非抽取等待 或處理很長時間運行的 操作,而不會抽取Windows 消息。這種情況一般有 性能產生負面影響,並可能 甚至導致申請成爲 無響應或內存使用 隨着時間的推移不斷積累。爲了 避免這個問題,所有的單 單線程單元(STA)線程 應該使用抽水等待基元 (如CoWaitForMultipleHandles)和 在長時間運行 常規操作抽取消息。
我沒有在我的代碼中使用任何COM組件,有人已經有這個問題嗎?
死鎖由調試器檢測到的,並且不具有任何堆棧跟蹤。 的COM異常堆棧跟蹤是:
{ 「的事件無法調用任何 訂戶(異常來自 HRESULT:0x80040201)」}在 System.Runtime.InteropServices.Marshal
。 ThrowExceptionForHRInternal(的Int32 的errorCode,IntPtr的errorInfo中)
在 MS.Internal.Automation.UiaCoreProviderApi.UiaHostProviderFromHwnd(IntPtr的 HWND)
當我打電話
popup.IsOpen = true
我有一個類似的問題,但我不記得上下文。你能發佈相關的代碼或堆棧跟蹤嗎? – 2009-09-21 11:54:51
謝謝,我更新了我的問題! – 2009-09-21 12:00:20
在WPF 4.0中有可怕的bug,只是說'。 – 2011-10-07 10:00:01