CLR 在過去 60 秒一直無法從 COM 內容 0x854fd0 轉換為 COM 內容 0x855140。

  • 3587
  • 0
  • C#
  • 2016-06-29

摘要:CLR 在過去 60 秒一直無法從 COM 內容 0x854fd0 轉換為 COM 內容 0x855140。

由於工作的關係,需要透過Cmd去執行執行檔進行一些動作流程。

可是客戶提了一個需求,需要可以進行中斷作業

所以運用到多執行緒。

 

結果Debug時,遇到了從未遇過的問題,

CLR 在過去 60 秒一直無法從 COM 內容 0x854fd0 轉換為 COM 內容 0x855140。擁有該目的內容/Apartment 的執行緒,很可能正在進行非提取等候或正在處理非常長的執行作業,而未提取 Windows 訊息。這種情況通常會對效能產生負面影響,甚至可能導致應用程式停止回應,或導致記憶體使用量持續隨時間而累積。若要避免這個問題,所有單一執行緒的 Apartment (STA) 執行緒都應該使用提取等候基本方法 (例如 CoWaitForMultipleHandles),並且在長時間的執行作業中定期提取訊息。

透過google大神,找到了解法。

 

http://watershau.blogspot.tw/2011/01/clr-60-com-0x1a1d38-com-0x1a1ea8.html