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();
Вы должны попробовать это. Изменить последовательность кода.