私は数回ロードすることができなかったテストアプリケーションを持っています。それはうまく動作します。複数のアプリの読み込みを防止する方法はありますが、異なるインスタンスを読み込むことはできますか?
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
のためにこのアプリケーションでは、一度だけロードする必要があります。私はe.Args[0]
にこの数のインスタンスを受け取り、この時点でこのアプリケーションの別のショートカットと比較するためにそれを保持する必要があります。
ここに質問があります:どうすればいいですか?すでに存在するプロセスを別のインスタンスの番号と比較するにはどうすればよいですか。任意のアイデアを感謝!
@ASh代わりにミューテックスを使用して別の方法があり、どのように行います思う? –
なぜそれを「インスタンス番号」と呼んでいますか?これは単なるコマンドライン引数です。とにかくプロセス名を確認することも意味をなさないので、ユーザーはアプリケーションをコピーして実行可能ファイルの名前を変更することができます。 – CodeCaster