Я получил следующий код
System.Diagnostics.Process capp = new System.Diagnostics.Process();
capp.StartInfo.UseShellExecute = false;
capp.StartInfo.RedirectStandardOutput = true;
capp.StartInfo.RedirectStandardError = true;
capp.EnableRaisingEvents = false;
capp.StartInfo.FileName = "app.exe";
capp.StartInfo.Arguments = "-i -v -mj";
capp.Start();
consoleOutput = capp.StandardOutput.ReadToEnd() + capp.StandardError.ReadToEnd();
if (!capp.WaitForExit(10000)) capp.Kill();
и проблема в том, что если внешнее приложение работает правильно, ему требуется менее 10 секунд для выполнения своих задач.Если он остановился / завис по какой-то причине, несмотря на использование
if (!capp.WaitForExit(10000)) capp.Kill();
, как предлагается в какой-то другой теме, он продолжает работать.Вышеупомянутая строка, кажется, не работает вообще в моем случае, я думаю, это связано с тем, что я прочитал StandardOutput и StandardError.Как исправить мой код, чтобы сделать чтение вывода и WaitForExit (), чтобы работать в стороне?