C# 重定向标准错误输出
因此,我要做的是调用java.exe并使用一些参数调用jar文件。如果一切正常且命令正常,则参数将打印到richtext框中 我遇到的问题是命令不正确。因此,在once实例中,假设用户输入了错误的密码,并将其传递到txtPassword中。Stanadard out未被重定向。如果在Dos控制台中运行完全相同的命令,将显示消息“Error:Auth fail”。如何将该错误重定向到富文本框?我以为重定向stdout就可以了,但显然不行 任何帮助都将受到感谢。请参阅下面的代码C# 重定向标准错误输出,c#,redirectstandardoutput,C#,Redirectstandardoutput,因此,我要做的是调用java.exe并使用一些参数调用jar文件。如果一切正常且命令正常,则参数将打印到richtext框中 我遇到的问题是命令不正确。因此,在once实例中,假设用户输入了错误的密码,并将其传递到txtPassword中。Stanadard out未被重定向。如果在Dos控制台中运行完全相同的命令,将显示消息“Error:Auth fail”。如何将该错误重定向到富文本框?我以为重定向stdout就可以了,但显然不行 任何帮助都将受到感谢。请参阅下面的代码 //Declar
//Declare and instantiate a new process component.
System.Diagnostics.Process process1;
process1 = new System.Diagnostics.Process();
process1.StartInfo.UseShellExecute = false;
process1.StartInfo.RedirectStandardOutput = true;
process1.StartInfo.CreateNoWindow = true;
process1.StartInfo.FileName = "java.exe ";
toLoad = lstBarToLoad.Items[i].Text;
process1.StartInfo.Arguments = "-Xmx512M -jar Deploy.jar" + txtPassword;
process1.StartInfo.Arguments += toLoad;
Console.WriteLine(process1.StartInfo.Arguments);
process1.Start();
process1.OutputDataReceived += (s, a) => myMethod(a);
process1.BeginOutputReadLine();
//myMthod
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
以及使用
process1.StartInfo.RedirectStandardOutput = true;
您还需要使用
process1.StartInfo.RedirectStandardError = true;
获取或设置一个值,该值指示是否将应用程序的错误输出写入Process.StandardError流
然后,您可以读取错误并根据自己的意愿进行处理:
string error = process1.StandardError.ReadToEnd();
使用属性的方式与使用RedirectStandardOutput属性的方式相同。您查看了
过程中的成员了吗?您可能会注意到errorDataReceived,它看起来像OutputDataReceived的等效版本。。。你看到错误了吗<代码>字符串错误=process1.StandardError.ReadToEnd()代码>所以问题是,现在STDOUT没有被重定向。你在做什么:process1.Start();process1.BeginOutputReadLine();process1.BeginErrorReadLine();process1.WaitForExit()代码>是。下面是我正在使用的代码:process1.Start();process1.OutputDataReceived+=(s,a)=>myMethod(a);process1.BeginOutputReadLine();process1.StandardError.ReadToEnd();字符串错误=process1.StandardError.ReadToEnd();rchsdtOut.Text=错误;注释对代码来说并不是很好。如果你还能读,请告诉我。STDError现在被重定向,但不再是我的常规输出。我会发布一个新的问题,因为这个问题已经得到了回答。