2017-08-16 16 views
0

私は数回ロードすることができなかったテストアプリケーションを持っています。それはうまく動作します。複数のアプリの読み込みを防止する方法はありますが、異なるインスタンスを読み込むことはできますか?

private void App_OnStartup(object sender, StartupEventArgs e) 
     { 
    if (Process.GetProcessesByName(currentProcess.ProcessName).Length > 1) 
        { 
          MessageBox.Show("Instance already running", "Warning"); 
          Application.Current.Shutdown(); 
         } 
    } 
} 

しかし、1人のユーザーが別のインスタンスでこのアプリケーションのショートカットを作成する場合はどうなりますか?それは「TEST.EXE 2」のように起動したときの例"Test.exe" 2

enter image description here

のためにこのアプリケーションでは、一度だけロードする必要があります。私はe.Args[0]にこの数のインスタンスを受け取り、この時点でこのアプリケーションの別のショートカットと比較するためにそれを保持する必要があります。

ここに質問があります:どうすればいいですか?すでに存在するプロセスを別のインスタンスの番号と比較するにはどうすればよいですか。任意のアイデアを感謝!

+0

@ASh代わりにミューテックスを使用して別の方法があり、どのように行います思う? –

+1

なぜそれを「インスタンス番号」と呼んでいますか?これは単なるコマンドライン引数です。とにかくプロセス名を確認することも意味をなさないので、ユーザーはアプリケーションをコピーして実行可能ファイルの名前を変更することができます。 – CodeCaster

答えて

1

あなたは関係なく、名前や実行可能ファイルのパスを同時に実行するために、あなたのアプリから複数のインスタンスを防ぐためにMutexを使用することができます。

Prevent multiple instances of a given app in .NET?

+0

ミューテックスは機能しません –

+0

どうしてそうでしょうか? – mm8

+0

私はそうではないと思いますが、同時に多くの現在のアプリケーションを実行することができます –

関連する問題