gpt4 book ai didi

c# - 通过P/Invoke防止应用程序调用库发生graceless crash

转载 作者:太空狗 更新时间:2023-10-29 21:02:49 26 4
gpt4 key购买 nike

我有一个 C# 应用程序 App A,它通过 P/Invoke 调用 C++ (Qt) DLL App B。假设我无法以任何方式编辑 App B,但我知道 App B 正在抛出一个 Out of Memory Exception under a set在将输入从 App A 传递到 App B 之前,我可以复制但不能准确测试的条件。此异常不会对 App A 造成任何威胁,如果 App B 可以某种方式“重置”,则可以忽略此异常,但当 App B 调用 abort() 导致 App A 运行时终止。

如何防止 App B 不可避免的、不可预测的、通常是普通的崩溃影响 App A

注释:

  • 抛出此错误时将忽略已实现的 UnhandledExceptionHandler
  • App B 由于 QtWebkit 中的一个错误而崩溃,App B 可以通过删除超大对象并返回 null 来轻松处理该错误。
  • App A 不会报告内存不足,并且机器有足够的内存来多次执行 App B 的操作,无论错误如何,但无论出于何种原因,此内存显然未分配给 App B

最佳答案

您创建一个 shim 进程,其唯一目的是加载 App B 并使用一些 IPC 机制与 App A 通信。App A 生成 shim,如果 shim 崩溃,则 App A 采取适当的操作(重新生成,传达错误给用户等)。

关于c# - 通过P/Invoke防止应用程序调用库发生graceless crash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14736821/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com