c#中两个进程之间的同步

本文关键字:进程 之间 同步 两个 | 更新日期: 2023-09-27 18:08:50

我有一个WPF应用程序,在一个按钮上单击我启动2个进程(P1和P2),两者都在命令propmt上运行,我能够将两个进程的输出重定向到我的WPF应用程序中的文本框。(读取异步输出).

但是输出是混合的,因为我没有做WaitForProcess既不为P1也不为P2(我不希望UI得到挂起)。我想让P2在P1结束后开始

我检查进程P1是否存在,然后只启动进程P2。但我的UI挂起了,什么也没出现。

在Windows任务栏中的

进程P1正在运行,但是文本框没有更新

c#中两个进程之间的同步

初始化Process对象时,可以为Process.Exited事件注册处理程序。正如您所想象的,当相关进程终止时将引发此事件,因此您可以从那里启动第二个Process:

Process process = new Process();
process.EnableRaisingEvents = true;
...
process.Exited += Process_Exited;

private void Process_Exited(object sender, EventArgs e)
{
    // First Process has completed - start second process here
}