C#調試程序出現託管調試助手 "DisconnectedContext"、託管調試助手 "ContextSwitchDeadlock"錯誤的處理

錯誤現象

調試C#代碼出現如下錯誤,然後多次點擊在這裏插入圖片描述按鈕後軟件正常運行

託管調試助手 "DisconnectedContext"
Message=託管調試助手 “DisconnectedContext”:“針對此 RuntimeCallableWrapper 向 COM 上下文 0xbf9e03f8 的轉換失敗,錯誤如下: 被調用的對象已與其客戶端斷開連接。 (異常來自 HRESULT:0x80010108 (RPC_E_DISCONNECTED))。原因通常是創建此 RuntimeCallableWrapper 的 COM 上下文 0xbf9e03f8 已斷開連接,或者該上下文正忙於執行其他操作。正在從當前 COM 上下文(COM 上下文 0xbf9e02d0)釋放這些接口。這可能會導致損壞或數據丟失。要避免此問題,請確保在應用程序全部完成 RuntimeCallableWrapper (表示其內部的 COM 組件)之前,所有 COM 上下文/單元/線程都保持活動狀態並可用於上下文轉換。”

託管調試助手 “ContextSwitchDeadlock”:“CLR 無法從 COM 上下文 0x60868a40 轉換爲 COM 上下文 0x60868b68,這種狀態已持續 60 秒。擁有目標上下文/單元的線程很有可能執行的是非泵式等待或者在不發送 Windows 消息的情況下處理一個運行時間非常長的操作。這種情況通常會影響到性能,甚至可能導致應用程序不響應或者使用的內存隨時間不斷累積。要避免此問題,所有單線程單元(STA)線程都應使用泵式等待基元(如 CoWaitForMultipleHandles),並在運行時間很長的操作過程中定期發送消息。”

解決方法

異常設置->Managed Debugging AssistantsContextSwitchDeadlockDisconnectedContext兩個異常項前的勾選去除,然後點擊“繼續”按鈕即可。
在這裏插入圖片描述

參考資料


https://social.msdn.microsoft.com/Forums/en-US/c3ac33bc-fe82-4892-8ee4-b46803e7cf7d/com-error?forum=winappswithcsharp

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章