0

.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");。如何解决这个问题?

4

1 回答 1

1

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

来自MSDN

返回值

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

...

评论

...

如果 StartInfo 属性的 FileName 成员指定的进程资源已在计算机上运行,​​则不会启动其他进程资源。而是重用正在运行的进程资源并返回false

于 2012-06-07T15:55:50.450 回答