2010-12-16 104 views
8

可以说我有一个ID为1234的进程。此进程在我的应用程序运行之前正在运行。问题已退出进程

我有这样的代码:

 Process app = Process.GetProcessById(1234); 
     MessageBox.Show(app.MainWindowTitle); 
     app.Exited += this.methodShowsMessageBox; 

现在,当我编译和运行应用程序,它获取的过程,并显示在主窗口的标题。但是,当我关闭进程1234,app.Exited doesnt火...为什么这是?而我将如何让它着火?

回答

17

请注意,​​指出EnableRaisingEvents必须设置为true,然后才会触发此事件。

+0

雅虎你救了我的一天! – TheVillageIdiot 2011-08-30 11:48:17

3

默认情况下,由于性能原因,Process类不会引发事件。如果您希望Process对象监视Exited并引发该事件,则需要将其EnableRaisingEvents属性设置为true。

有一笔费用与 有关,用于监视退出的进程。如果 EnableRaisingEvents为true,则在 关联进程终止时引发 Exited事件。您为 指定的过程当时将运行Exited事件。

有时,您的应用程序启动了一个 进程,但不需要通知其关闭的 。例如, 您的应用程序可以启动记事本到 ,允许用户执行文本编辑 ,但不会再使用记事本应用程序 。您可以在 进程退出时选择 选择不通知,因为它不是 与您的应用程序的 的继续操作有关。设置 EnableRaisingEvents为false可节省 系统资源。