CMDラインを経由して、メッセージパッシングとシングルインスタンスアプリ?

StackOverflow https://stackoverflow.com/questions/1685005

質問

私は、コマンドラインから起動されたC#のアプリを持っています。通常、データは、このようなアドオン(app -a string)のようにコマンドラインを通過です。私は開くことをアプリのインスタンスを1つだけたいと思いますし、より多くの文字列は、コマンドラインを介して追加された場合、私はそれについて知っていると自分自身を更新するための単一のインスタンスをしたいと思います。私は適切にデータベースにデータを入れて、実行中のインスタンスまたはMSGをmsgと、実行中のインスタンスにデータを渡すと、それはDBにそれを入れて、自分自身を更新してみましょうことができます。

どのように私はC#.NETでこれを行うのでしょうか? (3.5)

役に立ちましたか?

解決

名前付きパイプを作成する必要があり、アプリケーションの最初のインスタンスは、アプリケーションの後続のインスタンスは、同じ名前付きパイプを作成するために失敗し、その代わりに使用するための名前付きパイプを開こうとすべきです。開封後は、文字列(または実際に任意のデータ)は、アプリケーションの既に実行中のインスタンスに転送することができます。名前付きパイプは、閉じることができ、アプリが終了する可能性があります。

また、あなたは、.NET Remotingを使用して、アプリケーションの他のインスタンスは、前述されているものと同様の挙動を、活性化し得ることはよく知られているタイプを登録できます。

最終的には、「IPC」または「プロセス間通信」のクイック検索は、他の選択肢を開くことがあります。しかし、私は名前付きパイプのアプローチが最もきれいで、拡張/実装するのが最も簡単でしょうと信じています。

あなたはまた、あなたが仲介者としてデータベースを使用して、例えば(複数のランに障害状態を示さないIPCメカニズムを選ぶ場合には、名前のミューテックスを作成することができ、「初回実行」検出のためにデータ共有のため)。これらの名前は、カーネルによって管理されているのと同じ名前のミューテックスを「作成」することができ、処理なし2は、これは、名前付きパイプと同じ制約はありません(したがって、スパンプロセス、セッション、デスクトップおよびウィンドウステーションの境界。)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top