我有一個可執行文件,運行良好,當我手動運行時,它存在應有的預期輸出。但是,當我用下面的方法運行它時,Process.Exited事件永遠不會被觸發。我已經記住了Process.EnableRaisingEvents即使EnableRaisingEvents設置爲true,也不會調用Process.Exited
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;
有關,因爲當我禁用這個,它的作品。但那可能只是另一個問題的症狀。
任何幫助表示讚賞:-)
啊,這就解釋了!謝謝 :-) – 2012-02-28 15:20:54