簡體   English   中英

System.Diagnostics.Process 未在代碼中退出

[英]System.Diagnostics.Process not Exiting in Code

我有以下代碼在另一台服務器上運行良好。 問題是進程似乎永遠不會進入退出狀態。 被調用的 exe 在最后一步創建一個文件,這個文件確實被創建了,但我的代碼似乎永遠不知道這個過程已經完成。 此外,手動運行時,被調用的 exe 運行時間遠少於 10 秒。 我的代碼如下所示:

                System.Diagnostics.Process proc = new System.Diagnostics.Process()    proc.StartInfo.RedirectStandardOutput = true;
                proc.StartInfo.RedirectStandardError = true;
                proc.StartInfo.UseShellExecute = false;
                proc.StartInfo.CreateNoWindow = true;
                proc.StartInfo.FileName = exeConf.CMD;
                proc.StartInfo.Arguments = argString;
                proc.Start();
                proc.WaitForExit(10000);

                if(proc.HasExited)
                msgLine = proc.StandardError.ReadToEnd();

請參閱MSDN 文章。

如果父進程在 p.StandardOutput.ReadToEnd 之前調用 p.WaitForExit 並且子進程寫入足夠的文本來填充重定向的流,則會導致死鎖情況。 父進程將無限期地等待子進程退出。 子進程將無限期地等待父進程從完整的 StandardOutput 流中讀取。

看來,如果Process.StandardOutput.ReadToEnd()具有后要立即調用Process.Start()否則就可能造成僵局

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM