我有一個GUI應用程序,它連接到傳感器,收集數據並使用BackgroundWorker
線程在後臺處理它。如何調試和解決'DisconnectedContext'崩潰?
現在,我使用ProgressChanged
將數據發佈到GUI,這似乎很適合開始使用。自從我提高了數據速率並發現了一個問題,如果軟件運行幾分鐘,處理器使用量似乎會逐漸增加,直到在我的計算機上的兩個內核上達到接近100%,然後出現如下錯誤:
託管調試助手'DisconnectedContext'在'myapp.exe'中檢測到問題。其他信息:上下文0xe2ba0已斷開連接。從當前上下文釋放接口(上下文0xe2d10)。這可能會導致損壞或數據丟失。
我讀過一些網絡上的東西,這表明如果GUI應用程序無法足夠快地抽取消息,就會發生這種情況。我注意到,如果我迅速調整窗口的大小(即抽取更多的消息來支持我所認爲的理論),我可以激起同樣的崩潰發生得更快。
所以這裏的問題是:
- 是否有人與我有關消息抽的假設一致?
- 是否有其他解釋?
- 有什麼方法可以證明它(查看隊列中的消息數量)?
- 這些都是不好的代碼味道,這表明我正在做這個錯誤的方式嗎?
任何意見將非常感激地收到。
我嘗試了MTATHread設置,它似乎只是偶爾會導致崩潰。我已經採用了queuenig機制,並且在顯示代碼的一部分中發現了一個錯誤,該代碼過度填充了「RichTextBoxControl」。在這兩者之間,看起來我已經解決了這個問題。感謝您的建議。 – 2010-02-09 13:09:16
我已經看到這種情況再次發生了幾次,它肯定是通過嘗試從數據生產者線程向其偵聽器發送太多'ProgressChanged'請求觸發的。 – 2010-02-17 15:10:23