Tengo un ejecutable, que funciona bien cuando lo ejecuto manualmente, y existe como debería con el resultado esperado. Pero cuando lo ejecuto con el siguiente método, el evento Process.Exited nunca se activa. Tenga en cuenta que me he acordado de las Process.EnableRaisingEventsProcess.Exited nunca se llama, aunque EnableRaisingEvents está establecido en verdadero
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();;
}
El problema es el mismo, si yo uso Process.WaitForExit() en lugar de extensiones de reactivos, a esperar a que el evento de salida.
Además, si ejecuto el proceso con otro argumento, que produce otro resultado, existe bien.
Parece tener algo que ver con el process.StartInfo.RedirectStandardOutput = true;
ya que cuando desactivo esto, funciona. Pero eso podría ser solo un síntoma de otro problema.
Cualquier ayuda es apreciada :-)
Arh, eso lo explica! Gracias :-) –