第 3 方 DLL 从 IDisposable 终结器抛出异常
3rd party DLL throws exception from IDisposable finalizer
我的应用程序依赖于一个写得不好、闭源、不受支持的第 3 方 DLL(不要问)。
我正在尝试使用实现 IDisposable
的 DLL 中的 class,但终结器喜欢经常抛出异常。
一个非常简单的例子:
using (var badObj = new BadClass(path)){
// do work
}
// not actually doing manual GC in real code...
GC.Collect();
GC.WaitForPendingFinalizers(); // <-- Exception
是否有任何方法可以在不使应用程序崩溃的情况下从中恢复?
如果您对终结器 never 运行ning 没意见,假设对 Dispose
的调用足以清理,您可以指示垃圾收集器从不 运行 终结器 GC.SuppressFinalize
.
我最终修改了程序集。 dnSpy,很棒的工具!
我的应用程序依赖于一个写得不好、闭源、不受支持的第 3 方 DLL(不要问)。
我正在尝试使用实现 IDisposable
的 DLL 中的 class,但终结器喜欢经常抛出异常。
一个非常简单的例子:
using (var badObj = new BadClass(path)){
// do work
}
// not actually doing manual GC in real code...
GC.Collect();
GC.WaitForPendingFinalizers(); // <-- Exception
是否有任何方法可以在不使应用程序崩溃的情况下从中恢复?
如果您对终结器 never 运行ning 没意见,假设对 Dispose
的调用足以清理,您可以指示垃圾收集器从不 运行 终结器 GC.SuppressFinalize
.
我最终修改了程序集。 dnSpy,很棒的工具!