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

第三方dll引发来自IDisposable终结器的异常

  •  -1
  • wdonahoe  · 技术社区  · 7 年前

    我的应用程序依赖于一个写得不好、封闭源代码、不受支持的第三方DLL(不要问)。

    我正在尝试使用该dll中实现 IDisposable 但终结器喜欢经常抛出异常。

    一个非常简单的例子:

    using (var badObj = new BadClass(path)){
         // do work
    }
    
    // not actually doing manual GC in real code...
    GC.Collect();
    GC.WaitForPendingFinalizers(); // <-- Exception
    

    任何 如何在不崩溃应用程序的情况下从中恢复?

    2 回复  |  直到 7 年前
        1
  •  0
  •   Joe Sewell    7 年前

    如果您对终结器没有任何问题,则假定调用 Dispose 足够清理内容,您可以指示垃圾收集器从不使用 GC.SuppressFinalize .

        2
  •  0
  •   wdonahoe    7 年前

    我最后修改了程序集。 dnSpy ,很棒的工具!

    推荐文章