我已经从我的应用程序中购买了第三方库。我的应用程序引用了一个小的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())。那个捕获物也不会发射。
现在我认为唯一的解决方案是创建一个单独的程序,只需等待另一个程序关闭然后重新打开它。这听起来很可怕......