来自互操作dll的典型方法签名如下:
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime), DispId(0xc9)]
public virtual extern void Send([MarshalAs(UnmanagedType.Struct)] ref object pVal);
我对这个库的所有调用都封装在一个大的try-catch中(异常)。如果发送有任何问题,我需要将其标记为失败并继续。不幸的是,我的申请将毫无例外地随机关闭。对此我能做些什么吗?使用Task.Factory.StartNew()已经在单独的线程上进行了这些调用,但整个应用程序只是退出。除了本地try catch之外,还有一个包在对StartNew的调用中(我有一个对.Wait()的调用,只是为了调试)。那个陷阱也不会开火。
现在我认为唯一的解决方案是创建一个单独的程序,它只需等待另一个程序关闭,然后重新打开它。听起来很可怕。。。