代码之家  ›  专栏  ›  技术社区  ›  Adam Harte

如果WPF应用程序没有响应,则自动重新启动

  •  2
  • Adam Harte  · 技术社区  · 15 年前

    我有一个偶尔崩溃的WPF应用程序,它会说“没有响应”。是否有方法检测程序是否没有响应?如果是这样,重新启动WPF应用程序?

    在修复bug之前,这将是一个临时修复。

    2 回复  |  直到 15 年前
        1
  •  15
  •   Phil Devaney    15 年前

    您可以使用Windows Vista中引入的应用程序恢复和重新启动管理器API。这是一个非托管(C)API,但是在 Windows API Code Pack .

    无论如何,这是一个很好的添加到应用程序的功能,因为它为用户提供了更好的体验,如果(当!)应用程序崩溃。您甚至可以编写一个回调来保存有关用户正在做什么的信息,然后在应用程序重新启动时恢复该状态。

    API最基本的用途是在应用程序启动的某个地方添加以下行:

    ApplicationRestartRecoveryManager.RegisterForApplicationRestart( new RestartSettings( "restart", RestartRestrictions.None ) );
    
        2
  •  3
  •   Greg D    15 年前

    因为这是调试应用程序时的临时修复,所以有一种可能是欺骗并使用引导程序/启动应用程序,其唯一任务是监视有问题的应用程序。通过启动有问题的应用程序 System.Diagnostics.Process 班的 Start 方法,然后偶尔监视返回的 Process Responding 财产。如果没有反应,做你需要做的。

    当然,当你解决真正的问题时,这只是权宜之计,这一点很重要。做这种长期的事情有很多小问题。