代码之家  ›  专栏  ›  技术社区  ›  colithium

C#-从互操作异常中恢复

  •  2
  • colithium  · 技术社区  · 14 年前

    来自互操作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()的调用,只是为了调试)。那个陷阱也不会开火。

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

    1 回复  |  直到 14 年前
        1
  •  0
  •   rerun    14 年前

    看看这个 blog