.Exited
并非适用于所有情况,例如:当我关闭显示图片的负责应用程序时,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");
。如何解决这个问题?
答案 0 :(得分:1)
您是否可以打开图像编辑程序?当您调用proc.Start()时,如果该进程已在运行,则重用现有进程。你应该检查proc.Start()的返回值,看看是否是这种情况。
来自MSDN:
返回值
true 如果启动了流程资源;假如果没有新的假 流程资源已启动(例如,如果现有流程是 重复使用)。
...
<强>说明强>
...
如果StartInfo属性的FileName成员指定的进程资源是 已经在计算机上运行,没有启动其他进程资源。相反, 重复使用正在运行的流程资源,并返回 false 。