2

因此,对于一个项目,我必须使用以非托管 C++ 编写的臭名昭著的容易出错的 GDAL ( http://www.gdal.org/ ) 库(实际上我使用的是 C# 绑定)。问题有时是库炸弹并使 vhost32.exe 进程崩溃。我对此无能为力。空的 catch 块对我没有好处,甚至没有引发 AppDomain.CurrentDomain.UnhandledException。

抛出的异常是

RASTER.exe 中 0x77B9AA3C (ntdll.dll) 处的未处理异常:0xC0000374:堆已损坏(参数:0x77BAFE38)。

所以显然这个异常是不可恢复的,Windows 会关闭我的进程。到目前为止,一切都很好。现在的问题是,我从这里去哪里?我不希望仅仅因为调用错误库失败而终止整个过程。我有哪些选择?产生第二个进程并使用命名管道进行进程间通信?这仍然意味着另一个进程会因“Windows 正在检查问题的解决方案……”弹出窗口而崩溃。不好。不幸的是,对于我需要的功能,该库别无选择。

<gcConcurrent enabled="false" />
<legacyCorruptedStateExceptionsPolicy enabled="true" />

在我的 App.config 中并没有改变任何事情。也没有装饰用[HandleProcessCorruptedStateExceptions]属性轰炸的方法。

有什么我可以做的吗?

4

0 回答 0