为什么在重定向标准输出时 TaskList.exe 永远不会结束?
Why Does TaskList.exe Never End When Redirecting Standard Output?
当我尝试使用进程 class 运行 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字节!我需要增加某种字符缓冲区的大小吗?
如果您使用 RedirectStandardOutput = true
,请将此行添加到您的代码中:
process.Start();
// To avoid deadlocks, always read the output stream first and then wait.
string out = process.StandardOutput.ReadToEnd();
process.WaitForExit();
当我尝试使用进程 class 运行 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字节!我需要增加某种字符缓冲区的大小吗?
如果您使用 RedirectStandardOutput = true
,请将此行添加到您的代码中:
process.Start();
// To avoid deadlocks, always read the output stream first and then wait.
string out = process.StandardOutput.ReadToEnd();
process.WaitForExit();