C# - 从Interop的异常中恢复

时间:2010-10-06 05:20:19

标签: c# exception interop

我已经从我的应用程序中购买了第三方库。我的应用程序引用了一个小的interop dll,后者又调用另一个dll(非CLI)来完成它的工作。由于这个库与硬件通信,我想这个dll与各种设备驱动程序进行通信。

interop dll的典型方法签名如下所示:

[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime), DispId(0xc9)]
public virtual extern void Send([MarshalAs(UnmanagedType.Struct)] ref object pVal);

我对这个库的所有调用都包含在一个大的try catch(Exception)中。如果发送出现任何问题,我需要将其标记为失败并继续。不幸的是,我的应用程序将随机关闭,没有例外。我能做些什么吗?这些调用已在单独的线程上进行使用Task.Factory.StartNew(),但整个应用程序才退出。除了本地的try catch之外,还有一个围绕StartNew的调用(我只是为了调试而调用.Wait())。那个捕获物也不会发射。

现在我认为唯一的解决方案是创建一个单独的程序,只需等待另一个程序关闭然后重新打开它。这听起来很可怕......

1 个答案:

答案 0 :(得分:0)

看看这个blog您可能会收到崩溃报告,并且可以看到哪些呼叫失败并将其报告给您的第三方开发者。