如何获取C#中的cmd命令输出到标签

Ven*_*tha 2 c# winforms

我编写了一个代码,用于从C#表单应用程序运行cmd命令。现在,我想将cmd的输出输出到winform中标签。我写了一个代码。但这给了我以下错误

错误的屏幕截图

System.dll中发生了类型为'System.InvalidOperationException'的未处理异常。其他信息:StandardOut尚未重定向或进程尚未启动。

如何解决?这是我的原始代码。

private void button1_Click(object sender, EventArgs e)
{
    System.Diagnostics.Process process = new System.Diagnostics.Process();
    System.Diagnostics.ProcessStartInfo startiNFO = new  System.Diagnostics.ProcessStartInfo();

    startiNFO.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
    startiNFO.FileName = "cmd.exe";
    startiNFO.Arguments = "/C ipconfig";
    startiNFO.UseShellExecute = false;

    process.StartInfo.RedirectStandardOutput = true;
    process.StartInfo.RedirectStandardInput = true;

    process.StartInfo = startiNFO;

    process.Start();

    string outp = process.StandardOutput.ReadToEnd();
    process.WaitForExit();

    MessageBox.Show(outp);
}  
Run Code Online (Sandbox Code Playgroud)

Moh*_*ava 5

而不是process.WaitForExit();像这样

函数的完整代码如下所示

private void button1_Click(object sender, EventArgs e)
{
    System.Diagnostics.Process process = new System.Diagnostics.Process();
    process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
    process.StartInfo.FileName = "cmd.exe";
    process.StartInfo.Arguments = "/C ipconfig";
    process.StartInfo.UseShellExecute = false;
    process.StartInfo.CreateNoWindow = true;
    process.StartInfo.RedirectStandardOutput = true;
    process.StartInfo.RedirectStandardInput = true;
    process.Start();
    string q = "";
    while(!process.HasExited)
    {
        q += process.StandardOutput.ReadToEnd();
    }
    label1.text = q;
    MessageBox.Show(q);
} 
Run Code Online (Sandbox Code Playgroud)