我目前遇到了重定向STDError和STDOutput的問題。我想要做的是,如果沒有錯誤發生,將出現打印到富文本框以及正常輸出的錯誤。重定向STD錯誤和STDOut
我遇到的問題是,如果我添加了一行重定向SDT錯誤:
string error = process1.StandardError.ReadToEnd();
rchsdtOut.Text = error;
然後我的正常STD輸出不重定向到文本FILD,但如果有一個錯誤,被打印。
process1 = new System.Diagnostics.Process();
process1.StartInfo.UseShellExecute = false;
process1.StartInfo.RedirectStandardOutput = true;
process1.StartInfo.RedirectStandardError = true;
process1.StartInfo.CreateNoWindow = true;
process1.StartInfo.FileName = "java.exe ";
//String abc = txtSingleBar.Text.Replace("\\", "/");
toLoad = lstBarToLoad.Items[i].Text;
process1.StartInfo.Arguments = "-Xmx512M -jar";
process1.StartInfo.Arguments += toLoad;
Console.WriteLine(process1.StartInfo.Arguments);
try
{
process1.Start();
process1.OutputDataReceived += (s, a) => myMethod(a);
process1.BeginOutputReadLine();
string error = process1.StandardError.ReadToEnd();
rchsdtOut.Text = error;
}
方法將事件寫入一個文本FILD
private void myMethod(DataReceivedEventArgs e)
{
if (e.Data != null)
{
Action action =() => rchsdtOut.Text += "\r\n" + e.Data.ToString();
rchsdtOut.BeginInvoke(action, null);
Console.WriteLine(e.Data.ToString());
}
}//end of private
Bascally我要的是既被重定向,SDTOut和SDTError,如果發生。
任何想法?
您的發佈代碼似乎有語法錯誤。請發佈可編譯的代碼。 – Oded 2012-02-07 20:46:37
不確定你的意思。它符合我的要求。 – user1158745 2012-02-07 20:47:47