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