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
并非适用于所有情况,例如:toC:\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)
找到它,然后附加事件处理程序。