C# .已退出的事件问题

C# .已退出的事件问题,c#,process,C#,Process,.Exited并非适用于所有情况,例如:toC:\foo.png当我关闭负责显示图像的应用程序时,我没有得到MessageBox.show(“Exited!”) 这是我的密码: public static void TryOpenFile(string filename) { Process proc = new Process(); proc.Sta

.Exited
并非适用于所有情况,例如:to
C:\foo.png
当我关闭负责显示图像的应用程序时,我没有得到
MessageBox.show(“Exited!”)

这是我的密码:

         public static void TryOpenFile(string filename)
                {
                        Process proc = new Process();
                        proc.StartInfo = new ProcessStartInfo(filename);
                        proc.EnableRaisingEvents = true;
                        proc.Exited += (a,b) => { MessageBox.Show("Exited!"); }
                        proc.Start();
                    }

如何调用函数
TryOpenFile(@“C:\foo.png”)。如何修复此问题?

您是否已经打开了图像编辑程序?调用proc.Start()时,如果进程已在运行,则重用现有进程。您应该检查proc.Start()的返回值,看看是否是这种情况

发件人:

返回值

如果流程资源已启动,则为true;如果没有新的,则为false 流程资源已启动(例如,如果现有流程已启动) 重复使用)

备注

如果StartInfo属性的FileName成员指定的进程资源为 已在计算机上运行,未启动其他进程资源。相反 重新使用正在运行的进程资源,并返回false


你确定你关闭了申请吗?关闭任务管理器后,您是否在任务管理器中看到它?再次感谢。:)是否有一种更“稳健”的方法来监控它?也许在线程或计时器中检查pid是否仍在进程列表中,间隔为秒。您是否已经知道pid将是什么?如果是这样,可以使用
System.Diagnostics.Process.GetProcessById(Int32 processId)
找到它,然后附加事件处理程序。