自分のプロセスで自分を再起動する
アプリケーションで自分自身で再起動をしたいケースがあります。
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);
}
}
}