我正在使用System.Diagnostics.Process
類來執行命令行程序。C# - 重寫事件處理程序 - 添加參數
我正在使用OutputDataReceived
方法將輸出重定向到我自己的方法。
pr.OutputDataReceived += new DataReceivedEventHandler(OnDataReceived);
pr.ErrorDataReceived += new DataReceivedEventHandler(OnDataReceived);
但是,我有多個線程運行此cmd程序的多個實例。我想要做的是能夠確定輸出數據來自哪個流程實例 - 理想情況下,包含名稱的字符串。 (每個進程在GUI上都有它自己的進度條,我創建了另一個事件將輸出傳遞給GUI,因此,我需要知道數據來自哪個進程以更新進度條)。
我開始進行實驗:
public override delegate void DataReceivedEventHandler(object sender, DataReceivedEventArgs e, string processName);
然後我發現我不得不重寫Process類內的方法OutputDataReceived
。這反過來意味着我必須創建一個繼承System.Diagnostics.Process
的自定義類,並且有一個接受字符串參數的方法,因此OutputDataReceived
事件可以將流程實例名稱(字符串)傳遞給我的覆蓋的DataReceivedEventHandler
。
問題的目的是獲得一些關於如何進行的意見。我提出的建議似乎是正確的方式來實現我想要的嗎?或者,有沒有更好的方法來做到這一點?
只需創建一個小幫手類。它可以將Process實例以及您需要的任何其他狀態存儲爲專用字段。 – 2010-10-22 07:36:22