8
|
Umber Ferrule Gokhan Tank · 技术社区 · 16 年前 |
![]() |
1
12
最好的方法是使用命名 mutex .
说明: 当一个线程完成而没有释放互斥体时,任何其他等待它的进程都可以获取它,但它将获得WAIT_ABANDONED作为返回值,这意味着互斥体被放弃,因此它所保护的部分的状态可能是不安全的。 这样,你的第二个应用程序就不会消耗任何CPU周期,因为它会一直等待互斥体(这是由操作系统内部处理的) |
![]() |
2
3
创建一个包装器应用程序,将有故障的应用程序作为子应用程序启动并等待,怎么样?如果子进程的退出代码指示错误,则重新启动它,否则退出。 |
![]() |
3
3
我认为主要问题是沃森博士显示了一个对话框 并使你的过程保持活力。 您可以使用Windows API编写自己的调试器 从那里运行崩溃的应用程序。 这将防止其他调试器捕获以下崩溃 您的应用程序,您还可以捕获Exception事件。 由于我没有找到任何示例代码,我写了以下代码 Python快速而肮脏的示例。我不确定它有多坚固 特别是DEBUG_EVENT的声明可以改进。
|
![]() |
4
2
我意识到你正在处理的是Windows XP,但对于在Vista下处于类似情况的人来说,有新的 crash recovery API s可用。 Here's a good introduction 他们能做什么。 |
![]() |
5
2
这是一个稍微改进的版本。 在我的测试中,当有故障的exe生成“访问违规”时,之前的代码在无限循环中运行。 我对我的解决方案并不完全满意,因为我没有明确的标准来知道哪些异常应该继续,哪些不能(ExceptionFlags没有帮助)。 但它适用于我运行的示例。 希望它能有所帮助, Vivian De Smedt
|
![]() |
hdw3 · 文本视图。片段崩溃应用程序中的setText() 7 年前 |
![]() |
Michael Hutter · 乌龟冻结悬挂碰撞 7 年前 |
![]() |
RMP · 什么是mqt\U native\u模块以及如何处理其崩溃 7 年前 |
![]() |
3c71 · getView()在getDrawable()中崩溃 7 年前 |
![]() |
Riccardo Perego · Swift设置值为空可选产量失败 7 年前 |