2015-10-04 65 views
1

我在这里有一个代码将启动一个进程,当再次按下它将杀死当前进程并启动一个新的(重新启动)。VB.net自动重新启动应用程序

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)然后结束当前实例。
如果需要,不要忘记在应用程序启动/重新启动时从保存的文件中加载保存的/默认的配置。