2009-12-15 108 views
0

我有一個循環產生新進程來運行一些「.exe」文件。我將這些「.exe」文件的輸出捕獲到我的文本框中。爲了立即捕獲輸出 ,我不能使用process.waitforexit()方法。現在我有 的問題是,如果前一個過程需要很長時間才能運行,則第二個過程將運行 ,而不管前一個過程是否完成。這弄亂了我的輸出。c中的進程管道#

有沒有辦法讓我將進程插入到隊列結構中,以便它可以按順序運行?

感謝

回答

3

肯定的:

Queue<Process> processes = GetProcesses(); 
while(processes.Count > 0) { 
    Process process = processes.Dequeue(); 
    // execute process and capture output 
} 

這裏有Queue(T) MSDN。

+0

如果我理解正確,getProcesses將創建一個新的Process組件數組,並將它們與現有的流程資源相關聯。但是,我只想讓我在循環中創建的進程處於隊列中。在這種情況下,我應該如何初始化隊列? – user195678

+0

'GetProcesses'是你填充隊列的函數。使用'Queue.Enqueue'將您創建的進程添加到隊列中。 – jason

+0

謝謝傑森,我會試試這個。 – user195678

0

您也可以在線程中並行運行進程並僅排隊輸出。

但是,您將不得不使用更復雜的鎖定和通知系統。