使用应用程序恢复和重启

应用程序可以使用应用程序恢复和重启(ARR)在应用程序因未经处理的异常或应用程序停止响应而退出之前保存数据和状态信息。 如果请求,应用程序也会重启。

当您注册以进行恢复或重启时,注册信息将添加到流程中。 Windows 错误报告(WER) 使用注册信息来调用您的恢复回调函数并重启您的应用程序。 例如,如果注册恢复,并且应用程序遇到未经处理的异常,WER 会向用户显示一个对话框,为用户提供联机检查解决方案、关闭程序或调试程序的选项。 如果用户选择检查解决方案或关闭程序,WER 将调用已注册的回调,并让应用程序有机会保存数据和状态信息。 恢复完成后,应用程序将终止。

如果注册重启,并且应用程序遇到未经处理的异常,WER 会向用户显示相同的对话框,但提供了重启程序而不是关闭程序的选项。 如果您同时注册了恢复和重启功能,将首先进行恢复,然后应用程序将被终止并重新启动。

无响应的应用程序以类似的方式进行处理。 如果应用程序在五秒内未响应 Windows 消息,则应用程序被视为无响应,然后用户尝试与应用程序交互;用户将在标题栏中看到(未响应)。 当用户单击系统关闭按钮时,将激活 WER。

在应用程序无响应或遇到未经处理的异常之前,必须注册恢复或重启或删除注册。 但是,在恢复回调中,可以更改重启命令行。

有关注册恢复或重启的详细信息,请参阅以下主题:

有关实现恢复和重启功能的示例,请参阅 WinBase\WindowsErrorReporting 文件夹中的 Windows SDK 中的 AppRecovery 和 AppRestart 示例。