0
我遇到了一個有趣的問題。流程重用 - 異步BeginOutputReadLine問題
C#允許重複使用過程中的資源(根據MSDN) - 所以我把過程完成後實例的start()方法:
Process p = new Process();
// init
p.Start();
一段時間後,:
p.Kill();
// not important
p.Start();
當我有執行同步的線程讀取所有內容似乎沒問題 - 在第一次和第二次啓動()調用之後正在讀取輸出。
現在有趣的事情。當我使用異步讀取(一切正常初始化):
p.BeginOutputReadLine();
輸出僅在首次啓動()調用後才被讀取。第二個調用過程開始後,沒有任何輸出被重定向。
我也打過電話取消,開始一次:用同樣的結果
p.CancelOutputRead();
p.Kill();
// not important
p.Start();
p.BeginOutputReadLine();
。
一些機的詳細資料:Win 7的旗艦版SP1 86(CPU也X86),測試了.NET 2.0/3.0,VS 2008
的問題是 - 它是一些框架錯誤或我的的Process.Start的誤解定義(「開始(或重新使用)此Process組件的StartInfo屬性指定的流程資源並將其與組件關聯。」)?任何幫助非常感謝。
我想解決方案是重新創建過程對象,但它可能會更慢。
不,我重置StartInfo和處理字段,它仍然無法正常工作。我寫了一個小應用程序(約50行代碼),用於沒有任何外部可執行文件或代碼的測試。 – marchewek