0

我正在运行以下代码来执行来自 vb.net 应用程序的命令。

    Dim CMDServer As Diagnostics.ProcessStartInfo
    Dim CMDReply As Diagnostics.Process
    CMDServer = New Diagnostics.ProcessStartInfo
    CMDServer.WorkingDirectory = "C:/"
    CMDServer.FileName = "cmd.exe"
    CMDServer.UseShellExecute = False
    CMDServer.RedirectStandardOutput = True
    CMDServer.RedirectStandardError = True
    CMDServer.CreateNoWindow = True
    CMDServer.Arguments = "/C " + command
    CMDReply = Process.Start(CMDServer)
    MsgBox("START")
    Dim Reply As String = ""
    If Not CMDReply.HasExited Then
        CMDReply.WaitForExit()
    End If
    MsgBox("EXIT")
    Try
        Dim ext = CMDReply.ExitCode
        Reply = CMDReply.StandardOutput.ReadToEnd()
        MsgBox(ext.ToString + "   " + Reply)
    Catch ex As Exception
        MsgBox(ex.ToString)
    End Try

它几乎适用于所有命令,但是当command="help"程序卡在CMDReply.WaitForExit(). 谁能解释这里可能是什么问题?

4

1 回答 1

1

标准死锁。先读取输出,然后等待退出。该程序在您读取其所有输出之前无法退出。只有在适合缓冲区的输出很少的情况下,您拥有的代码才能工作。

来自 Hans Passant 的评论

于 2016-03-14T18:41:00.933 回答