我有以下问题,我希望有人能够帮助我。
我有一个运行 shell 程序的 VB .net (2010) 工作人员。
shell 程序是一个服务和输出的东西,比如:
Server initializing...
Server opening port...
more info...
我能够“捕捉”外壳的输出并将其添加到文本框(使用设置文本功能)。
我可以通过单击停止按钮来取消工作人员,但是当 shell 没有更多输出时,我无法再停止工作人员。
至少我怀疑是这样的。
我试过检查 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()
有任何想法吗?
提前致谢!
问候,
酸碱度