如果已启动进程,则会收到通知

时间:2014-07-15 08:38:49

标签: c# wpf

我正在运行WPF应用程序(进程A)。从按钮单击开始,我需要启动另一个进程(进程B),这是一个WinForms应用程序。

现在我的问题是,如果我通过单击(X)按钮关闭进程B的窗口,它会突然关闭进程B,然后如何通知此事件信息以处理A?

2 个答案:

答案 0 :(得分:1)

如果您使用Process.Start执行外部应用程序,则可以使用WaitForExit方法保留光标,直到不退出应用程序。请查看此示例,以了解有关MSDN上的WaitForExit方法的更多信息。

答案 1 :(得分:1)

Process类具有Exited事件,正是出于此目的。您还必须将EnableRaisingEvents设置为true才能使用它:

private void ButtonClick(object sender, RoutedEventArgs e)
{
    var process = new Process();
    process.StartInfo.FileName = "cmd.exe";
    process.EnableRaisingEvents = true;
    process.Exited += ProcessExited;
    process.Start();

    startButton.IsEnabled = false;
}

private void ProcessExited(object sender, EventArgs e)
{
    Dispatcher.BeginInvoke(new Action(() => startButton.IsEnabled = true));
}