我已經從我的應用程序購買了第三方庫。我的應用程序引用了一個小的interop dll,它又調用另一個dll(非CLI)來完成它的工作。由於這個庫與硬件通信,我想這個DLL會與各種設備驅動程序進行交流。C# - 從Interop異常中恢復
從互操作的dll的典型方法的簽名如下:
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime), DispId(0xc9)]
public virtual extern void Send([MarshalAs(UnmanagedType.Struct)] ref object pVal);
我有這個庫包在一個大的嘗試捕捉(異常)的所有呼叫。如果發送出現任何問題,我需要將其標記爲失敗並繼續。不幸的是,我的應用程序只會隨機關閉,沒有例外。我能做些什麼嗎?這些調用已經在單獨的線程上進行了使用Task.Factory.StartNew(),但整個應用程序都退出了。除了本地try catch之外,還有另外一個包含在StartNew的調用中(我爲了調試目的調用了.Wait())。該捕獲也不會觸發。
現在我想唯一的解決方案是創建一個單獨的程序,只需等待另一個關閉,然後重新打開它。這聽起來很可怕......
使用try-catch包裝StartNew()不會捕獲線程上發生的異常。你可以展示「本地」試試看嗎? – 2010-10-06 15:47:38
但呼叫.wait應該。對? – colithium 2010-10-07 02:00:16
圍繞調用的代碼只是一個嘗試{...} catch(Exception){...} – colithium 2010-10-07 03:22:58