我在執行一個像「del * .txt」這樣的'txt'文件被打開並且不能被刪除的cmd進程時看到的具體問題,cmd進程將輸出一行文本'文件正在使用,無法刪除文件')到控制檯,但不是StandardOutput或StandardError。根據2008年的這個問題[https://stackoverflow.com/a/320779/832705],答案是否定的,但我想知道這是否可能在過去的4年中發生了變化,或者如果有人已經找到了解決方法。另外,我可能會誤解這個答案,這可能意味着CLR異常而不是cmd異常。有沒有C#的方式來讀取cmd進程的異常?
這裏是我的過程安裝/啓動代碼:
ProcessStartInfo psi = new ProcessStartInfo("cmd", string.Empty);
psi.CreateNoWindow = true;
psi.ErrorDialog = false;
psi.RedirectStandardError = true;
psi.RedirectStandardOutput = true;
psi.RedirectStandardInput = true;
psi.UseShellExecute = false;
Process p = new Process();
p.StartInfo = psi;
p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);
p.ErrorDataReceived += new DataReceivedEventHandler(p_ErrorDataReceived);
outputfilesw = new StreamWriter(outputfile, true);
try
{
p.Start();
p.BeginOutputReadLine();
//work code
}
我的印象是你不得不調用p.BeginErrorReadLine()來捕獲任何輸出到StandardError流。我可能是錯的。自從我在System.Diagnostics中修改以來已經有一段時間了。 – trope
@trope:是的,就是這樣。真的很簡單。你應該把它放在一個答案 – stackuser83