假设我有一个ID为1234的进程。此进程在我的应用程序运行之前运行。
我有这段代码:
Process app = Process.GetProcessById(1234);
MessageBox.Show(app.MainWindowTitle);
app.Exited += this.methodShowsMessageBox;
现在,当我编译并运行应用程序时,它会获取进程并显示主窗口标题。然而,当我关闭进程1234时,app.Exited确实无法触发......为什么会这样?我怎么才能解雇呢?
答案 0 :(得分:17)
请注意,在此事件发生前EnableRaisingEvents
必须设置为true
的{{3}}州才会触发。
答案 1 :(得分:3)
默认情况下,出于性能原因,Process类不会引发事件。如果您希望Process对象监视Exited并引发该事件,则需要将其EnableRaisingEvents属性设置为true。
与此相关的成本 看着退出的过程。如果 EnableRaisingEvents是真的, 当出现退出事件时 相关流程终止。该 您指定的过程 退出事件在那时运行。
有时,您的应用程序会启动 过程但不需要 通知其关闭。例如, 您的应用程序可以启动记事本 允许用户执行文本 编辑,但不再使用 记事本应用程序。您可以 选择不通知时 进程退出,因为它不是 与继续经营有关 你的申请。设置 EnableRaisingEvents为false保存 系统资源。