C# 为什么不是';在wpf应用程序中没有收到来自标准输出和错误的所有数据,但它在控制台应用程序中?
当您在下面的代码中调用RedirectCommandStream时,它在控制台应用程序中可以正常工作,但是在wpf应用程序中,它会丢失标准输出数据和一些标准错误输出。然后,从该方法输出的字符串生成器将用于在wpf应用程序上显示 有人能帮忙吗,我已经在这上面呆了很长时间了C# 为什么不是';在wpf应用程序中没有收到来自标准输出和错误的所有数据,但它在控制台应用程序中?,c#,wpf,console,redirectstandardoutput,standard-error,C#,Wpf,Console,Redirectstandardoutput,Standard Error,当您在下面的代码中调用RedirectCommandStream时,它在控制台应用程序中可以正常工作,但是在wpf应用程序中,它会丢失标准输出数据和一些标准错误输出。然后,从该方法输出的字符串生成器将用于在wpf应用程序上显示 有人能帮忙吗,我已经在这上面呆了很长时间了 class ProcessStreamRedirection { private static StringBuilder OutputBuilder = null; public static
class ProcessStreamRedirection
{
private static StringBuilder OutputBuilder = null;
public static StringBuilder RedirectCommandStreams(string FileName,string Arguments)
{
Process Process;
Process = new Process();
Process.StartInfo.FileName = FileName;
Process.StartInfo.Arguments = Arguments;
Process.StartInfo.UseShellExecute = false;
Process.StartInfo.RedirectStandardOutput = true;
Process.StartInfo.CreateNoWindow = false;
Process.OutputDataReceived += new DataReceivedEventHandler(DataHandler);
OutputBuilder = new StringBuilder();
Process.StartInfo.RedirectStandardError = true;
Process.ErrorDataReceived += new DataReceivedEventHandler(DataHandler);
OutputBuilder.AppendLine(string.Format("Starting process: {0} {1}", Process.StartInfo.FileName ,Process.StartInfo.Arguments));
Process.Start();
Process.BeginOutputReadLine();
Process.BeginErrorReadLine();
Process.WaitForExit();
if (OutputBuilder.Length > 0)
{
OutputBuilder.AppendLine(string.Format("Output:\n{0}\n", OutputBuilder));
}
Process.Close();
return OutputBuilder;
}
private static void DataHandler(object sendingProcess, DataReceivedEventArgs outLine)
{
if (!String.IsNullOrEmpty(outLine.Data))
{
OutputBuilder.AppendLine(outLine.Data);
}
}
}
内存是否正确,只是显示错误?从你所说的听上去,显示代码是唯一可能出现错误的地方。不,我已经通过调试检查了内存,但它也不正确。我认为这与显示代码无关。似乎无法理解这一点,一切看起来都很正常,我以前在WPF中做过一些非常非常接近这一点的事情。唯一的区别是我做了读取输出的同步版本。你试过了吗?