Mat*_*ley 16
谷歌浏览器使用一种技术(通常称为进程分离),其中"主机"UI管理它可以检测到的无响应的子进程(或者更糟糕的是,抛出错误并关闭).它会为您打开的每个选项卡启动一个新进程.
这是一篇文章,更详细地描述了这一点.
使用.net的Process类,您可以启动进程,检查它们是否响应甚至杀死它们.
如果要在自己的窗口中嵌入进程窗口,可以使用SetParent等平台功能在另一个窗口中移动一个窗口.在使用Forms时,我担心我不知道SetParent的托管替代方案,但我怀疑存在一个,所以在使用SetParent之前值得搜索.
如果主机进程崩溃,只需使用类似的东西AppDomain.CurrentDomain.UnhandledException就可以收到发生顶级异常的通知,但是在这个阶段你不太可能预测应用程序中的对象状态并重新启动(沿着有一些日志记录和通知用户)可能是你唯一明智的选择.
Joh*_*ing 12
我不知道谷歌的代码,所以我猜测.谷歌浏览器可能不会预测它会崩溃,但会检测到它已经崩溃.
在Windows中,您可以通过为所有未处理的异常提供处理程序来完成此操作.在此处理程序中,您可能会执行诸如重新启动应用程序,创建minidump文件等操作.
看一下SetUnhandledExceptionFilter函数的一个方法.
| 归档时间: |
|
| 查看次数: |
739 次 |
| 最近记录: |