任务列表进程在执行后不会终止

时间:2014-07-23 18:38:27

标签: c# mono

我正在运行此代码段:

_taskListProcess = 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 tasklist /FO CSV /NH";
startInfo.CreateNoWindow = true;
startInfo.UseShellExecute = false;
startInfo.RedirectStandardOutput = true;
_taskListProcess.StartInfo = startInfo;
_taskListProcess.EnableRaisingEvents = true;
_taskListProcess.Exited += new EventHandler(HandleTaskListProcessTerminated);
_taskListProcess.Start();

我的问题是任务列表进程永远不会终止。我看到它悬挂在Window任务管理器中。因此,永远不会调用我的函数HandleTaskListProcessTerminated。

我正在开发使用Mono的Unity。

1 个答案:

答案 0 :(得分:0)

由于您设置了RedirectStandardOutput = true;,启动的进程会填充StandardOutput缓冲区。 尝试阅读StandardOutput直到你消耗了所有东西:

_taskListProcess.Start();
while (!_taskListProcess.StandardOutput.EndOfStream)
{
    Console.WriteLine(_taskListProcess .StandardOutput.ReadLine());
}