我有一个偶尔崩溃的WPF应用程序,并说“没有响应”。有没有办法检测程序是否没有响应?如果是这样,请重新启动WPF应用程序?
在修复错误之前,这将是一个临时修复。
答案 0 :(得分:15)
您可以使用Application Recovery&重新启动Manager API,它是在Windows Vista中引入的。这是一个非托管(C)API,但Windows API Code Pack中提供了托管包装器。
这是一个很好的功能,无论如何都要添加到您的应用程序中,因为它为用户提供了一个更好的体验,如果(当!)您的应用程序崩溃。您甚至可以编写一个回调函数来保存有关用户正在执行操作的信息,然后在应用程序重新启动时恢复该状态。
API的最基本用途是在应用程序启动时在某处添加以下行:
ApplicationRestartRecoveryManager.RegisterForApplicationRestart( new RestartSettings( "restart", RestartRestrictions.None ) );
答案 1 :(得分:3)
因为在调试应用程序时这是一个临时修复,所以有一种可能性就是欺骗并使用一个引导程序/启动应用程序,其唯一的工作就是监视有问题的应用程序。通过System.Diagnostics.Process
类的Start
方法启动有问题的应用程序,然后偶尔监视返回的Process
'Responding
属性。如果没有回应,请做你需要做的事。
重要的是,当你解决真正的问题时,这只能作为权宜之计。做长期这样的事情有很多小问题。