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 に答える