0
我有一種方法可以創建一個Process對象,設置參數並對其進行明星處理。在下面的代碼中,哪種檢查錯誤的方法更正確? 這樣的:啓動後檢查進程對象錯誤
public void DoSomething(string command)
{
try
{
var p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.FileName = command;
p.Start();
p.WaitForExit();
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
或本:
public void DoSomething(string command)
{
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.FileName = command;
p.Start();
string error = p.StandardError.ReadToEnd();
p.WaitForExit();
if (!string.IsNullOrEmpty(error))
{
Console.WriteLine(error);
}
}
感謝您的幫助。
確定嗎?我在[msdn庫](http://msdn.microsoft.com/en-us/library/vstudio/system.diagnostics.process.standarderror(v = vs.90).aspx)中找到了此錯誤。如果發生死鎖父進程在p.StandardError.ReadToEnd之前調用p.WaitForExit並且子進程寫入足夠的文本來填充重定向的流 – Zabaa