process.startinfo.RedirectStandardOutput выдает исключение, а process.waitforexit() останавливает приложение на C#

Используя процесс, я получаю исключение при использовании process.StartInfo.RedirectStandardOutput = true; ниже приведено исключение: "StandardOut не был перенаправлен или процесс еще не начался".

я использую process.WaitForExit, который зависает моего графического интерфейса приложения, поэтому я использовал process.StandardOutput.ReadToEnd(); до WaitForExit в соответствии с MSDN, но теперь мой процесс выполняется в течение бесконечного времени и выдает указанное выше исключение в лог-файл и графический интерфейс также зависает.

                Process process = new Process();
                process.StartInfo.WorkingDirectory = Path.GetDirectoryName(Application.ExecutablePath);


                string strArguments = ""; 

                process.StartInfo.FileName = @"appname.bat";
                process.StartInfo.Arguments = strArguments;
                process.StartInfo.CreateNoWindow = true;
                process.StartInfo.UseShellExecute = false;
                process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                process.StartInfo.RedirectStandardOutput = true;
                process.StartInfo.RedirectStandardError = true;

                process.Start();


                string output = process.StandardOutput.ReadToEnd();
                process.WaitForExit();
                process.Close();

Я не понимаю, где мне не хватает или где ошибка в коде... Даже я пробовал время ожидания в waitforexit, но не добился успеха.

2 ответа

Попробуй это

 process.StartInfo.RedirectStandardOutput = true;
    process.OutputDataReceived += (sender, args) => Console.WriteLine("received output: {0}", args.Data);
    process.Start();
    process.BeginOutputReadLine();

process.WaitForExit(); строка output = process.StandardOutput.ReadToEnd();

Вы должны попробовать это. Изменить последовательность кода.

Другие вопросы по тегам