2015-10-04 6 views
1

У меня есть код, который запустит процесс, и когда он будет снова нажат, он убьет текущий процесс и запустит новый (перезапустить).VB.net Auto Restart Application

Private Games As New Dictionary(Of String, Process) 

Private Sub GS1_Click(sender As Object, e As EventArgs) Handles GS1.Click 
    Dim gameservercfg As String = GameServer1.Text 
    Dim Key As String = gameservercfg.ToUpper 

    If Games.ContainsKey(Key) Then 
     If Not Games(Key).HasExited Then 
      Games(Key).Kill() 
     End If 
     Games.Remove(Key) 
    End If 

    Dim psi As New ProcessStartInfo 
    psi.FileName = System.IO.Path.Combine(Directory.GetCurrentDirectory(), "GameServer.exe") 
    psi.WorkingDirectory = System.IO.Path.GetDirectoryName(psi.FileName) 
    psi.Arguments = gameservercfg 
    Games.Add(Key, System.Diagnostics.Process.Start(psi)) 
End Sub 

То, что я хочу сделать, это, как сделать это автоматический перезапуск, что gameserver.exe падает сам по себе?

ответ

0

Основная идея, которая может работать в таком сценарии, заключается в том, что вы сохраняете любую конфигурацию в файле на диске. Затем перезапустите приложение с помощью

System.Windows.Forms.Application.Restart() 

И при запуске приложения событие загрузки любых данных из файла на диске, где вы сохранили конфигурацию, если таковые имеются. Для большего понимания в тему вы также можете прочитать эти SO сообщения
auto-restart-and-then-continue-the-sub-in-vb-net
application-restart-puzzling-behaviour-in-vb-net

Кроме того, вы можете (1) сохранить конфигурацию (2) начать новый независимый экземпляр того же приложения и (3), а затем завершите текущий экземпляр.
Не забудьте загрузить сохраненные/стандартные конфигурации из сохраненного файла при запуске/перезапуске приложения, если это необходимо.