我正在运行此代码段:
_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。
答案 0 :(得分:0)
由于您设置了RedirectStandardOutput = true;
,启动的进程会填充StandardOutput缓冲区。
尝试阅读StandardOutput
直到你消耗了所有东西:
_taskListProcess.Start();
while (!_taskListProcess.StandardOutput.EndOfStream)
{
Console.WriteLine(_taskListProcess .StandardOutput.ReadLine());
}