我有一個循環產生新進程來運行一些「.exe」文件。我將這些「.exe」文件的輸出捕獲到我的文本框中。爲了立即捕獲輸出 ,我不能使用process.waitforexit()方法。現在我有 的問題是,如果前一個過程需要很長時間才能運行,則第二個過程將運行 ,而不管前一個過程是否完成。這弄亂了我的輸出。c中的進程管道#
有沒有辦法讓我將進程插入到隊列結構中,以便它可以按順序運行?
感謝
我有一個循環產生新進程來運行一些「.exe」文件。我將這些「.exe」文件的輸出捕獲到我的文本框中。爲了立即捕獲輸出 ,我不能使用process.waitforexit()方法。現在我有 的問題是,如果前一個過程需要很長時間才能運行,則第二個過程將運行 ,而不管前一個過程是否完成。這弄亂了我的輸出。c中的進程管道#
有沒有辦法讓我將進程插入到隊列結構中,以便它可以按順序運行?
感謝
肯定的:
Queue<Process> processes = GetProcesses();
while(processes.Count > 0) {
Process process = processes.Dequeue();
// execute process and capture output
}
這裏有Queue(T)
MSDN。
您也可以在線程中並行運行進程並僅排隊輸出。
但是,您將不得不使用更復雜的鎖定和通知系統。
如果我理解正確,getProcesses將創建一個新的Process組件數組,並將它們與現有的流程資源相關聯。但是,我只想讓我在循環中創建的進程處於隊列中。在這種情況下,我應該如何初始化隊列? – user195678
'GetProcesses'是你填充隊列的函數。使用'Queue.Enqueue'將您創建的進程添加到隊列中。 – jason
謝謝傑森,我會試試這個。 – user195678