У меня есть следующая проблема, и я надеюсь, что кто-нибудь сможет помочь мне с этим.
У меня есть работник в VB .net (2010), который запускает программу-оболочку.
Программа оболочки - это сервис и вывод, такие как:
Server initializing...
Server opening port...
more info...
Я могу «поймать» вывод оболочки и добавить его в текстовое поле (используя функцию set text).
И я могу отменить работника, нажав на кнопку остановки, однако, когда оболочка больше не выводит, я больше не могу остановить работника.
По крайней мере, я подозреваю, что это так.
Я пытался проверить endofstream (закомментированный раздел), но это не сработало.
Я также пытался выполнить тот же код с некоторым тестовым текстом вместо 'clsProcess.StandardOutput.ReadLine', и это также работает.
Итак, я пришел к выводу, что это должно быть как-то связано с тем, что clsProcess.StandardOutput.ReadLine находится в конце ???
Try
clsProcess.StartInfo.UseShellExecute = False
clsProcess.StartInfo.RedirectStandardOutput = True
clsProcess.StartInfo.RedirectStandardError = True
clsProcess.StartInfo.FileName = serverpath + config_executable
clsProcess.StartInfo.CreateNoWindow = True
clsProcess.Start()
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error starting server")
Debug.Print(ex.Message)
End Try
Do While Not workerServer.CancellationPending
Try
'If Not clsProcess.StandardOutput.EndOfStream Then
SetText(clsProcess.StandardOutput.ReadLine + vbNewLine)
'End If
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error adding line to log")
End Try
Threading.Thread.Sleep(100)
Loop
clsProcess.Kill()
Есть идеи?
Заранее спасибо!
С уважением,
PH