Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么不是';在wpf应用程序中没有收到来自标准输出和错误的所有数据,但它在控制台应用程序中?_C#_Wpf_Console_Redirectstandardoutput_Standard Error - Fatal编程技术网

C# 为什么不是';在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

当您在下面的代码中调用RedirectCommandStream时,它在控制台应用程序中可以正常工作,但是在wpf应用程序中,它会丢失标准输出数据和一些标准错误输出。然后,从该方法输出的字符串生成器将用于在wpf应用程序上显示

有人能帮忙吗,我已经在这上面呆了很长时间了

        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中做过一些非常非常接近这一点的事情。唯一的区别是我做了读取输出的同步版本。你试过了吗?