【问题标题】:Restart application using C#使用 C# 重新启动应用程序
【发布时间】:2010-10-09 00:34:37
【问题描述】:

如何使用 C# 重新启动我的 WPF 应用程序?

【问题讨论】:

  • 重启是什么意思?
  • 非常简单的关闭它并自动重启:D

标签: c# wpf


【解决方案1】:

我认为 WPF 中没有像 WinForms 中那样的直接方法。但是,您可以使用来自 Windowns.Form 命名空间的方法,如下所示:(您可能需要添加对 System.Windows.Form 程序集的引用)

System.Windows.Forms.Application.Restart();

System.Windows.Application.Current.Shutdown();

【讨论】:

    【解决方案2】:

    以下是我找到的最佳解决方案,您不需要添加对 System.Windows.Forms 的引用,而是需要添加命名空间 System.Diagnostics,您已经拥有对其程序集的引用:

    Process.Start(Application.ResourceAssembly.Location);
    Application.Current.Shutdown();
    

    【讨论】:

    • 请注意,如果您的应用程序是使用 ClickOnce 部署的,则您不想使用此方法。 ApplicationDeployment.IsNetworkDeployed 将在您重新启动时为假。请参阅bit.ly/RKoVBz 了解更多信息。如果您的应用程序未使用 ClickOnce 部署,则此方法效果很好。
    • @blachniet 另外,如果使用此方法,您将在更新后启动 old 版本。使用 winforms 方法时也可以避免此问题。
    【解决方案3】:

    代码

    Process.Start(Application.ResourceAssembly.Location);
    

    不适用于 .NET Core 3.1 应用程序。而是使用

    using System.Diagnostics;
    using System.Windows;
    
    ...
    
    Process.Start(Process.GetCurrentProcess().MainModule.FileName);
    Application.Current.Shutdown();
    

    这也适用于 .NET Framework 应用程序。

    【讨论】:

    • 谢谢,我使用的是 3.1,但 Application.Current.Shutdown() 不可用,所以我改用 Application.Exit()
    【解决方案4】:

    您可以使用Windows API Code Pack 的重启和恢复 API。请注意,这是一个新的 API,因此它仅适用于当前操作系统(即:Windows 7)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-05
      • 2012-06-10
      • 2015-03-30
      • 1970-01-01
      相关资源
      最近更新 更多