Вы можете создать другое приложение, которое вы запускаете при выходе из приложения и которое в свою очередь запускает ваше приложение снова.Вроде как работает патчер, только ничего не исправляя.С другой стороны, у вас может быть цикл в «restart-application», который проверяет все запущенные процессы на предмет основного процесса приложения и пытается перезапустить его только после того, как он больше не появляется в процессе - и вы получили пустойЭто также относится к патчеру :) Хотя у вас, похоже, нет проблем с перезапуском приложения, поскольку оно все еще находится в списке процессов - я бы так поступил, если бы делал это в производственной среде, поскольку это дает вам больше всего возможностей.ИМХО.
Редактировать:
Эта часть в обработчике событий кнопки (или там, где вы хотите перезапустить приложение) вашего основного приложения ( Process2BRestarted).exe в моем случае):
private void cmdRestart_Click(object sender, EventArgs e)
{
var info = new ProcessStartInfo();
info.FileName = "ProcessReStarter";
info.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(info);
Application.Exit();
}
Это должно войти в ваше приложение утилиты / перезапуска ( ProcessReStarter.exe здесь):
private void MainForm_Load(object sender, EventArgs e)
{
// wait for main application process to end
// really should implement some kind of error-checking/timer here also
while (Process.GetProcessesByName("Process2BRestarted").Count() > 0) { }
// ok, process should not be running any longer, restart it
Process.Start("Process2BRestarted");
// and exit the utility app
Application.Exit();
}
Нажатие кнопки перезапуска создаст новый процесс ProcessReStarter.exe , который будет перебирать список процессов всех запущенных процессов - checkiNG, если Process2BRestarted все еще работает.Если процесс больше не отображается в списке, он теперь запустит новый процесс Process2BRestarted.exe и завершится сам.