【发布时间】:2009-12-15 18:41:39
【问题描述】:
我有一个循环,它产生新进程来运行一些“.exe”文件。我捕捉 这些“.exe”文件的输出到我的文本框。为了捕获输出 马上,我不能使用 process.waitforexit() 方法。我有正确的问题 现在是如果前一个进程需要很长时间才能运行,第二个进程将运行 不管前一个完成与否。这弄乱了我的输出。
有没有办法让我将进程插入队列结构,所以它 可以按顺序运行吗?
谢谢
【问题讨论】:
我有一个循环,它产生新进程来运行一些“.exe”文件。我捕捉 这些“.exe”文件的输出到我的文本框。为了捕获输出 马上,我不能使用 process.waitforexit() 方法。我有正确的问题 现在是如果前一个进程需要很长时间才能运行,第二个进程将运行 不管前一个完成与否。这弄乱了我的输出。
有没有办法让我将进程插入队列结构,所以它 可以按顺序运行吗?
谢谢
【问题讨论】:
当然:
Queue<Process> processes = GetProcesses();
while(processes.Count > 0) {
Process process = processes.Dequeue();
// execute process and capture output
}
这是Queue(T) 上的 MSDN。
【讨论】:
GetProcesses 是填充队列的函数。使用Queue.Enqueue 将您创建的进程添加到队列中。
您还可以在线程中并行运行进程并仅将输出排队。
但是,您将不得不使用更复杂的锁定和通知系统。
【讨论】: