【WPF】 C#で自分自身で再起動する方法

WPF WPF
Sponsored links
Sponsored links

自分のプロセスで自分を再起動する

アプリケーションで自分自身で再起動をしたいケースがあります。
Windows Formでは Application.Restart(); で再起動できるらしいです。
しかし、WPFで行ったときは再起動してくれないので検討しました。

検討結果

WPFで自分自身を再起動する方法を検討した結果が以下の通りです。

・App.xaml.csにResetメソッドを用意します。
・RestartメソッドでShutdownします。
・Application_Exitメソッドで Start します。

アプリケーション内で 
  App.Restart();
を呼び出すと、再起動できるようになりました。

コード例

<App.xaml.cs>

public partial class App : Application
{
	private static bool isRestart = false;
	public static void Restart()
	{
		isRestart = true;
		System.Windows.Application.Current.Shutdown();
	}

	private void Application_Exit(object sender, ExitEventArgs e)
	{
		// 2重起動防止用mutexの解放
		if(mutex != null)
		{
			mutex.ReleaseMutex();
			mutex.Close();
		}
		if(isRestart)
		{
            System.Diagnostics.Process.Start(Application.ResourceAssembly.Location);
		}
	}
}
タイトルとURLをコピーしました