第三方DLL从IDisposable终结器引发异常

时间:2018-07-11 19:18:41

标签: c# .net .net-4.5

我的应用程序依赖于一个编写不佳,封闭源,不受支持的第三方DLL(不要问)。

我正在尝试使用实现IDisposable的DLL中的类,但是终结器喜欢经常抛出异常。

一个非常简单的例子:

using (var badObj = new BadClass(path)){
     // do work
}

// not actually doing manual GC in real code...
GC.Collect();
GC.WaitForPendingFinalizers(); // <-- Exception

有没有任何方式可以从中恢复而不会导致应用程序崩溃?

2 个答案:

答案 0 :(得分:0)

如果您对终结器根本不运行没问题,那么假设对Dispose的调用足以清除所有内容,则可以指示垃圾回收器不要使用GC.SuppressFinalize运行终结器。

答案 1 :(得分:0)

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