小编Lar*_*ard的帖子

即使EnableRaisingEvents设置为true,也永远不会调用Process.Exited

我有一个可执行文件,当我手动运行它时运行正常,并且它应该与预期输出一样存在.但是当我使用下面的方法运行它时,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();;
}
Run Code Online (Sandbox Code Playgroud)

问题是一样的,如果我使用Process.WaitForExit()而不是反应式扩展,等待退出事件.

此外,如果我使用另一个参数运行该进程,这会产生另一个输出,它就可以了.

它似乎与我有关,process.StartInfo.RedirectStandardOutput = true;因为当我禁用它时,它的工作原理.但这可能只是另一个问题的症状.

任何帮助表示赞赏:-)

c# events process

8
推荐指数
1
解决办法
3471
查看次数

标签 统计

c# ×1

events ×1

process ×1