从C#process.StandardOutput.ReadLine()运行命令行

时间:2012-10-16 13:11:02

标签: c#

我正在尝试从我的c#程序运行命令行。保持简单我正在做的就是运行“dir”命令。然后我读了结果的每一行。当我到达输出结束时程序挂起。它没有做任何事情。以下是该计划。

    static void Main(string[] args)
    {
        ProcessStartInfo startInfo = new ProcessStartInfo("Cmd.exe");

        startInfo.UseShellExecute = false;
        startInfo.RedirectStandardInput = true;
        startInfo.RedirectStandardOutput = true;

        Process process = new Process();
        process.StartInfo = startInfo;
        process.Start();

        List<string> output = new List<string>();

        process.StandardInput.WriteLine("dir");
        process.StandardInput.Flush();

        while (process.StandardOutput.ReadLine() != null)
        {

            output.Add(process.StandardOutput.ReadLine());

        }
        process.WaitForExit();
        process.Kill();
    }

1 个答案:

答案 0 :(得分:3)

Cmd.exe在您告诉它之前不会退出 - 您正在等待它完成,但它正在等待您的下一个命令。

尝试process.StandardInput.WriteLine("exit");告诉进程退出。