アプリケーションの最初のインスタンスは名前付きパイプを作成する必要があり、アプリケーションの後続のインスタンスは同じ名前付きパイプの作成に失敗し、代わりに名前付きパイプを開いて使用しようとする必要があります。開くと、文字列(または実際には任意のデータ)をアプリのすでに実行中のインスタンスに転送できます。その後、名前付きパイプを閉じて、アプリを終了できます。
または、.NET Remotingを使用して、アプリケーションの他のインスタンスがアクティブ化できる既知のタイプを登録し、上記と同様の動作をさせることもできます。
最終的に、「IPC」または「プロセス間通信」をすばやく検索すると、他の選択肢が開かれる可能性があります。しかし、名前付きパイプのアプローチが最もクリーンで、実装/拡張が最も簡単だと思います。
「初回実行」検出では、複数回の実行で障害状態を示さないIPCメカニズムを選択した場合(たとえば、データベースをデータ共有の仲介者として使用する場合)、名前付きミューテックスを作成することもできます。 )。処理された2つが同じ名前のミューテックスを「作成」することはできません。これらの名前はカーネルによって管理されるため(したがって、プロセス、セッション、デスクトップ、およびウィンドウステーションの境界にまたがる)、これは名前付きパイプの場合と同じ制約です。