第三方DLL从IDisposable终结器抛出异常

问题描述 投票:-1回答:2

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

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

一个非常简单的例子:

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

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

有没有办法从这里恢复而不会崩溃应用程序?

c# .net .net-4.5
2个回答
0
投票

如果你可以完全没有运行终结器,假设调用Dispose足以清理,你可以指示垃圾收集器永远不会使用GC.SuppressFinalize运行终结器。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.