C# C语言中两个进程之间的同步#

C# C语言中两个进程之间的同步#,c#,wpf,C#,Wpf,我有一个WPF应用程序,单击一个按钮,我启动2个进程(P1和P2),两个进程都在命令propmt上运行,我能够将这两个进程的输出重定向到WPF应用程序中的文本框。 (异步读取输出) 但是输出是混合的,因为我没有对P1和P2执行WaitForProcess(我不希望UI挂起)。 我希望P2在P1结束后开始 为此,我正在检查进程P1是否存在,然后只启动进程P2。 但是我的UI挂起了,什么都没有出现 在Windows任务栏中 进程P1正在运行,但文本框未得到更新。初始化进程对象时,可以为该对象注册处理

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

但是输出是混合的,因为我没有对P1和P2执行WaitForProcess(我不希望UI挂起)。 我希望P2在P1结束后开始

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

在Windows任务栏中
进程P1正在运行,但文本框未得到更新。

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

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


记住要开始true@Sheridan,感谢您的帮助,已将enableRaisingEvents添加到true并注册退出的处理程序,但未触发退出的事件。:(谢谢,@rene…显然我不小心删除了太多不相关的代码…不是所有不相关的。抱歉@atulya,这不在我的控制范围内。这是处理这种情况的正常方法。我想你可能会注意到进程ID,并使用
分派器检查它是否仍在运行取而代之的是定期间隔。得到了解决方法-我正在将控制台输出显示到textbox,所以我在流程P1完成时添加了一些字符串的过滤器。
private void Process_Exited(object sender, EventArgs e)
{
    // First Process has completed - start second process here
}