当我尝试使用Process类运行tasklist.exe并将RedirectStandardOutput设置为true时,该过程永远不会结束。
using System.Diagnostics;
class Program
{
static void Main(string[] args)
{
RunProcess("tasklist.exe");
}
private static void RunProcess(string command)
{
var process = new Process()
{
StartInfo =
{
FileName = command,
RedirectStandardOutput = true,
UseShellExecute = false
}
};
process.Start();
process.WaitForExit();
}
}
如果我将RedirectStandardOutput设置为false,则该过程结束!!!
为什么tasklist.exe进程永远不会结束?我使用的是Windows 7和.net framework 4.5.2。
我发现当我强行关闭tasklist.exe时,每次都会有4096字节写入标准输出!我需要增加某种字符缓冲区吗?
答案 0 :(得分:2)
如果您正在使用RedirectStandardOutput = true
,请将此行添加到您的代码中:
process.Start();
// To avoid deadlocks, always read the output stream first and then wait.
string out = process.StandardOutput.ReadToEnd();
process.WaitForExit();