【问题标题】:How to get real time output of a shell command?如何获得shell命令的实时输出?
【发布时间】:2017-03-20 12:38:53
【问题描述】:

我找到了this 代码,了解如何获取 shell 的输出:

Dim oProcess As New Process()
Dim oStartInfo As New ProcessStartInfo("ApplicationName.exe", "arguments")
oStartInfo.UseShellExecute = False
oStartInfo.RedirectStandardOutput = True
oProcess.StartInfo = oStartInfo
oProcess.Start()

Dim sOutput As String
Using oStreamReader As System.IO.StreamReader = oProcess.StandardOutput
    sOutput = oStreamReader.ReadToEnd()
End Using
Console.WriteLine(sOutput)

这只是在命令完成后报告输出,而不是实时报告。

有没有办法实时获取输出?

【问题讨论】:

    标签: vb.net shell


    【解决方案1】:

    您需要订阅名为OutputDataReceived 的进程上的事件。

    这可以使用

    添加处理程序

    以下方式将演示这是如何完成的:

    AddHandler oProcess.OutputDataRecived, AddressOf OutputData
    

    从这里它将需要 Visual Studio 可以为您生成的方法,或者您可以生成该方法。它需要以下论点

    Object sender, DataRecievedEventArgs e
    

    在实际的方法中,这将是这样的:

    Private Sub OutputDataRecieved(sender As Object, e As DataRecievedEventArgs)
    

    在这里您可以使用e.Data 来获取当前行。

    希望对你有帮助

    【讨论】:

    • 您好,谢谢!但我不知道如何实现这一点。你能告诉我我会把这个和那个放在哪里吗?
    • 就在你声明你的新进程的地方,添加第一行,这样做之后,一条波浪线应该在“OutputData”下。从那里单击快速设置并单击创建新方法,或者您可以使用我提供的最后一行代码手动生成方法,然后在里面执行 Console.WriteLine()
    猜你喜欢
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多