У меня есть часть кода, где мне нужно запустить консольное приложение из моего консольного приложения. NET и получить его вывод, а в лучшем случае также распечатать этот вывод. Но я получаю сообщение об ошибке:
StandardOut не был перенаправлен или процесс еще не начался
У меня RedirectStandardOutput
установлено значение true и поток в соответствии с журналом запущен (я распечатал "чтение началось").
Я прилагаю проблемные c фрагменты кода ниже. Кто-нибудь понял, где проблема? Буду благодарен за любые полезные советы.
Thread readingThread = new Thread(Read);
ProcessStartInfo info = new ProcessStartInfo()
{
RedirectStandardOutput = true,
RedirectStandardError = true,
UseShellExecute = false,
CreateNoWindow = true,
FileName = "../../" + path + "/server_run.sh",
};
info.RedirectStandardOutput = true;
info.UseShellExecute = false;
info.FileName = "../../" + path + "/server_run.sh";
using (Process server = Process.Start(info))
{
readingThread.Start(server);
Console.WriteLine("Starting the server");
int serverNumber = serverPaths.FindIndex(x => x == path);
Console.WriteLine(serverNumber);
serverNumbers.Insert(serverNumber, server.Id);
int i = 0;
foreach (int a in serverNumbers)
{
Console.WriteLine("index: " + i + " " + a);
i++;
}
//////////////string ProcessID;
Console.WriteLine(server.Id.ToString()); ////////////////
Console.WriteLine("Server started");
}
readingThread.Join();
private static void Read(object parameter)
{
Console.WriteLine("read started");
Process process = parameter as Process;
process.BeginOutputReadLine();
process.OutputDataReceived += new DataReceivedEventHandler(MyProcOutputHandler);
}
private static void MyProcOutputHandler(object sendingProcess, DataReceivedEventArgs outLine)
{
// Collect the sort command output.
if (!String.IsNullOrEmpty(outLine.Data))
{
Console.WriteLine(outLine.Data);
}
}