我这里有一个代码可以启动一个进程,再次按下它会终止当前进程并启动一个新进程(重启)。
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 :(得分: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)然后结束当前实例。
如果需要,请不要忘记在应用程序启动/重启时从保存的文件中加载已保存/默认配置。