使用C#重启应用程序

kar*_*tal 16 c# wpf

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

key*_*rdP 28

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

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

System.Windows.Application.Current.Shutdown();
Run Code Online (Sandbox Code Playgroud)


小智 11

编码

Process.Start(Application.ResourceAssembly.Location);
Run Code Online (Sandbox Code Playgroud)

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

using System.Diagnostics;
using System.Windows;

...

Process.Start(Process.GetCurrentProcess().MainModule.FileName);
Application.Current.Shutdown();
Run Code Online (Sandbox Code Playgroud)

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


Moh*_*dil 10

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

Process.Start(Application.ResourceAssembly.Location);
Application.Current.Shutdown();
Run Code Online (Sandbox Code Playgroud)

  • 请注意,如果使用ClickOnce部署应用程序,则不希望使用此方法.重新启动时,`ApplicationDeployment.IsNetworkDeployed`将为false.有关详细信息,请参阅http://bit.ly/RKoVBz.如果您的应用程序未使用ClickOnce部署,则此方法非常有效. (5认同)
  • @blachniet 此外,如果使用此方法,您将在更新后启动*旧* 版本。使用 winforms 方法时也可以避免此问题。 (2认同)