【发布时间】:2010-10-09 00:34:37
【问题描述】:
如何使用 C# 重新启动我的 WPF 应用程序?
【问题讨论】:
-
重启是什么意思?
-
非常简单的关闭它并自动重启:D
如何使用 C# 重新启动我的 WPF 应用程序?
【问题讨论】:
我认为 WPF 中没有像 WinForms 中那样的直接方法。但是,您可以使用来自 Windowns.Form 命名空间的方法,如下所示:(您可能需要添加对 System.Windows.Form 程序集的引用)
System.Windows.Forms.Application.Restart();
System.Windows.Application.Current.Shutdown();
【讨论】:
以下是我找到的最佳解决方案,您不需要添加对 System.Windows.Forms 的引用,而是需要添加命名空间 System.Diagnostics,您已经拥有对其程序集的引用:
Process.Start(Application.ResourceAssembly.Location);
Application.Current.Shutdown();
【讨论】:
ApplicationDeployment.IsNetworkDeployed 将在您重新启动时为假。请参阅bit.ly/RKoVBz 了解更多信息。如果您的应用程序未使用 ClickOnce 部署,则此方法效果很好。
代码
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 应用程序。
【讨论】:
Application.Current.Shutdown() 不可用,所以我改用 Application.Exit()
您可以使用Windows API Code Pack 的重启和恢复 API。请注意,这是一个新的 API,因此它仅适用于当前操作系统(即:Windows 7)。
【讨论】: