В моем приложении WPF (один экземпляр с мьютексом) я использую Process.Start с ProcessStartInfo, который отправляет команду timed cmd для перезапуска приложения:
ProcessStartInfo Info = new ProcessStartInfo();
Info.Arguments = "/C ping 127.0.0.1 -n 2 && \"" + Application.GetCurrentProcess()+ "\"";
Info.WindowStyle = ProcessWindowStyle.Hidden;
Info.CreateNoWindow = true;
Info.FileName = "cmd.exe";
Process.Start(Info);
ShellView.Close();
Команда отправляетсяОС, пинг приостанавливает выполнение сценария на 2-3 секунды, после чего приложение выходит из ShellView.Close (), затем следующая команда после пинга запускает его снова.
Примечание.кавычки вокруг пути, если в нем есть пробелы, которые cmd не может обработать без кавычек. (Мой код ссылается этот ответ )