c# 调用cmd 输出 阻塞 解决
时间: 2023-12-18 07:04:53 浏览: 175
在 C# 中调用 cmd 命令时,如果不加任何处理,会出现阻塞的情况。这是因为 cmd 命令执行完成之前,C# 程序会一直等待其执行结果。为了解决这个问题,可以使用异步方式调用 cmd 命令。
以下是一个简单的示例代码:
```csharp
using System;
using System.Diagnostics;
namespace CmdTest
{
class Program
{
static async Task Main(string[] args)
{
var process = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = "cmd.exe",
Arguments = "/c dir",
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true
}
};
process.Start();
while (!process.StandardOutput.EndOfStream)
{
string line = await process.StandardOutput.ReadLineAsync();
Console.WriteLine(line);
}
Console.ReadKey();
}
}
}
```
这个例子中,我们使用了异步方式调用 cmd.exe,并在 while 循环中读取远程 cmd 命令输出的结果。由于异步方式不会阻塞程序,因此可以避免程序被挂起的情况。
阅读全文