さて、質問を誤解したので急いで答えました。私は当初、あなたが同じコンピューター上のインスタンスを参照していると思っていました。
同じコンピューター上で複数のインスタンスを防ぐには、 LocalMessageReceiverクラスを使用できます。
ここに、ユーザーがアプリケーションの2番目のインスタンスを開かないようにする方法を示すコード例を示します。各LocalMessageReceiverには、コンストラクターパラメーターとして一意のチャネル名が必要です。コンストラクターが例外をスローした場合、アプリケーションの別のインスタンスがあると見なすことができます。
最後のアプリケーションインスタンスのみを保持して前のアプリケーションインスタンスを閉じる場合は、インスタンスごとに一意のチャネル名を作成してから、他のインスタンスに閉じるように通知するメッセージをディスパッチする必要があります。
異なるコンピューター上でアプリケーションの複数のインスタンスを防ぐために、私は答える資格がありませんが、最初に頭に浮かぶのは、ユーザーがログインするたびにデータベースに書き込むことです。
サービスが必ずしもステートレスである必要がない場合は、ユーザーがログインするたびに一意の識別子をデータベーステーブルに保持できます(例:ログイン日?)。その後、ユーザーが何らかのアクションを実行したいときはいつでも、データベースの最後の識別子が現在のセッションの識別子に対応しているかどうかを確認できます。そうでない場合は、誰かが別のコンピューターから同じユーザーでログインしていることを意味するため、セッションを期限切れにすることができます。