У меня следующая проблема, и я надеюсь, что кто-то сможет мне помочь с ней.
У меня есть рабочий в VB .net (2010), который запускает программу-оболочку.
Программа-оболочка представляет собой службу и выводит такие вещи, как:
Server initializing...
Server opening port...
more info...
Я могу «поймать» вывод оболочки и добавить его в текстовое поле (используя функцию набора текста).
И я могу отменить работника, нажав кнопку остановки, однако, когда оболочка больше не выводит выходных данных, я больше не могу остановить работника.
По крайней мере, я подозреваю, что это так.
Я пытался проверить 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