У меня есть исполняемый файл, который работает нормально, когда я запускаю его вручную, и он существует, как и должно с ожидаемым выводом. Но когда я запускаю его с помощью метода ниже, событие Process.Exited никогда не запускается. Обратите внимание, что я запомнил Process.EnableRaisingEvents
protected override Result Execute(RunExecutable task)
{
var process = new Process();
process.StartInfo.Arguments = task.Arguments;
process.StartInfo.FileName = task.ExecutablePath;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.EnableRaisingEvents = true;
process.Exited += (sender, args) =>
{
processSync.OnNext(new Result
{
Success = process.ExitCode == 0,
Message = process.StandardOutput.ReadToEnd()
});
processSync.OnCompleted();
};
process.Start();
return processSync.First();;
}
Проблема та же, если я использую Process.WaitForExit () вместо реактивных расширений для ожидания события выхода.
Кроме того, если я запускаю процесс с другим аргументом, который выдает другой вывод, он в порядке.
Кажется, это как-то связано с process.StartInfo.RedirectStandardOutput = true;
, так как, когда я отключаю это, оно работает. Но это может быть просто симптомом другой проблемы.
Любая помощь приветствуется: -)