【发布时间】:2010-11-16 13:26:18
【问题描述】:
我有一个 WPF 应用程序偶尔会崩溃,并说“没有响应”。有没有办法检测程序是否没有响应?如果是这样,重新启动 WPF 应用程序?
这将是一个临时修复,直到错误得到修复。
【问题讨论】:
标签: c# .net wpf windows error-handling
我有一个 WPF 应用程序偶尔会崩溃,并说“没有响应”。有没有办法检测程序是否没有响应?如果是这样,重新启动 WPF 应用程序?
这将是一个临时修复,直到错误得到修复。
【问题讨论】:
标签: c# .net wpf windows error-handling
因为这是在您调试应用程序时的临时修复,所以一种可能性是作弊并使用引导程序/启动应用程序,其唯一工作是监控有问题的应用程序。通过System.Diagnostics.Process 类的Start 方法启动有问题的应用程序,然后偶尔监视返回的Process'Responding 属性。如果没有回应,做你需要做的。
当然,重要的是,这只是在您解决实际问题时作为权宜之计。长期做这样的事情有很多小问题。
【讨论】:
您可以使用 Windows Vista 中引入的 Application Recovery & Restart Manager API。这是一个非托管 (C) API,但在 Windows API Code Pack 中有可用的托管包装器。
无论如何,这是添加到您的应用程序中的一个很好的功能,因为如果(何时!)您的应用程序崩溃,它可以为用户提供更好的体验。您甚至可以编写一个回调来保存有关用户正在执行的操作的信息,然后在应用程序重新启动时恢复该状态。
API 最基本的用途是在应用程序启动的某处添加以下行:
ApplicationRestartRecoveryManager.RegisterForApplicationRestart( new RestartSettings( "restart", RestartRestrictions.None ) );
【讨论】: