我发现在某些环境中,SafeFileHandle
的终结器会抛出SEHException
因为终结器正在尝试关闭已经关闭的句柄。
问题是,如果连接了调试器,则必须抛出SEHException
。
在其他情况下,它应该对CloseHandle
API无效。
但是在没有任何调试器的干净环境(没有防病毒,VS或类似的东西),我们正在观察这样的问题。看起来像.NET或Windows bug。
我看到一个解决方案 - 编写一个自定义SafeFileHandle
来处理dispose中的SEHException
。但我需要重构这个庞大的项目并替换所有SafeFileHandles
。
有没有办法UnhandledException
处理程序吞下这个异常或中止导致它的线程(GC
finilizer线程)?有什么想法吗?