C#中,在子執行緒中呼叫C++撰寫的dll介面,該介面如果超過規定的時間不能回傳,主執行緒將強制關閉該子執行緒。
C#的Thread.Abort()不行,各位有什么方法沒有,麻煩指點一二,多謝~
uj5u.com熱心網友回復:
如何是在dll呼叫的函式處阻塞的話,他有占用系統一些非托管資源嗎?如果有的話在你寫Thread.Abort()處把這些資源關掉,不過我還是建議你在看看這個dll檔案吧,既然人家都封裝起來了,肯定有對你遇到的這種情況的處理
uj5u.com熱心網友回復:
只能看到該介面的說明文字:該介面正常情況會回傳true或false,不拋出例外。有沒有辦法直接殺掉這個dll執行緒,簡單粗暴的方法就行uj5u.com熱心網友回復:
thread.abort()會在子執行緒內拋出例外,你在你程式里面加個try...catch...看看能不能捕捉到這個例外uj5u.com熱心網友回復:
關電源吧。uj5u.com熱心網友回復:
那就呼叫 Proccess , 找到這個行程, 直接殺就是了uj5u.com熱心網友回復:
遇到同樣類似的問題,目標執行緒無法使用Abort()進行終止,請問您們是如何處理的。uj5u.com熱心網友回復:
老兄,你一下把我逗笑了
uj5u.com熱心網友回復:
弄到appdomain里面加載dlluj5u.com熱心網友回復:
exit()uj5u.com熱心網友回復:
正解。別人的東西掛了,我們能做的就是隔離他,嘗試恢復他。
appdomain 可以
另外做exe單獨封一下可以
簡單說就是類似polly的隔離板(Bulkhead Isolation)
對,俺們現在不也一樣么,有病了就隔離,避免問題擴大,然后再嘗試治療他
polly的介紹
https://blog.csdn.net/letnet1981/article/details/78120802
uj5u.com熱心網友回復:
多執行緒搞不定的,可以多行程,其它行程無回應不會導致主行程例外
回應超時后,直接把行程kill掉
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/44661.html
標籤:C#
上一篇:C#怎么設計英語寫作系統啊!!!
