使用应用程序恢复和重启
应用程序可以使用应用程序恢复和重启 (ARR) 在应用程序因未经处理的异常或应用程序停止响应而退出之前保存数据和状态信息。 如果请求,应用程序也会重启。
注册恢复或重启时,注册信息将添加到进程中。 Windows 错误报告 (WER) 使用注册信息调用恢复回调并重启应用程序。 例如,如果注册恢复,但应用程序遇到未经处理的异常,WER 向用户显示一个对话框,为用户提供联机检查解决方案、关闭程序或调试程序的选项。 如果用户选择为解决方案检查或关闭程序,WER 将调用已注册的回调,并让应用程序有机会保存数据和状态信息。 恢复完成后,应用程序将终止。
如果注册重启并且应用程序遇到未经处理的异常,WER 向用户显示相同的对话框,但提供重启程序而不是关闭程序的选项。 如果同时注册恢复和重启,则首先进行恢复;应用程序随后终止并重新启动。
以类似的方式处理无响应的应用程序。 如果应用程序在 5 秒内未响应 Windows 消息,并且用户随后尝试与应用程序交互,则应用程序将被视为无响应;用户将在标题栏中看到 (“未响应”) 。 当用户单击系统关闭按钮时,WER 将激活。
在应用程序变得无响应或遇到未经处理的异常之前,必须注册恢复或重启或删除注册。 但是,在恢复回调中,可以更改重启命令行。
有关注册恢复或重启的详细信息,请参阅以下主题:
有关实现恢复和重启功能的示例,请参阅位于 WinBase\WindowsErrorReporting 文件夹中的 Windows SDK 中的 AppRecovery 和 AppRestart 示例。