我有,我用它來查詢該傳感器的一些硬件傳感器封閉源代碼API。 API來自我通過C#interop使用的DLL。 API的功能被阻止。他們通常會返回錯誤值,但在某些情況下,他們不會返回。看門狗阻止函數調用
我需要能夠檢測到這種情況,在這種情況下殺死被阻塞的線程。這怎麼可以在C#中完成?
他們正在上通過一個BackgroundWorker創建調用線程。我正在尋找一個簡單的看門狗,用於阻止函數調用,在調用函數之前我可以設置它,並在我回來時重置。它應該坐在那裏等我回來。如果我不這樣做,使1)API再次釋放了,沒有我的應用程序的線程仍然賴在那裏做什麼應該它最終返回和2)我可以像其他恢復措施應當殺死線程重新初始化API以繼續使用它。
很好的答案。除了住在一起的貓和狗,當你殺死線程時,內存將會泄漏。我喜歡你有一個可以被殺死的單獨程序的建議。這種清理方式更加自動化。 –
+1:同意。單獨的流程是最好的選擇。它很糟糕,但有時候生活也是如此。 –
單獨的過程理念確實很好。這也將使我無法構建用於x86的整個託管應用程序,因爲我只有該非託管DLL的32位版本。 (只是看看是否還有其他想法。) – ygoe