web-dev-qa-db-ja.com

Windowsサービスとデスクトップアプリケーション間の通信

同様の質問が以前に出されたことは知っていますが、すべてのグーグルの後でさえ、私はまだ完全に道に迷っています。

メインアプリケーションを使用してバックグラウンドスレッドで実行する小さなWindowsサービスを作成しました(別のサービスに移動するのは理にかなっています)いくつかの理由で)。

アプリケーションの一部としてバックグラウンドスレッドが実行されていると、動作が完了するたびにイベントが発生し(この場合はデータベースを更新します)、そのイベントのタイムスタンプを使用して適切な情報を取得し、ウィンドウを更新します。具体的な内容は関係ないと思いますが、詳細が必要な場合はお知らせください。

データベースのデータをサービスとして実行できるようになったので、質問は次のようになります。イベントで行われていたものをどのように置き換えるか?

言い換えると、サービスからアプリに基本的なDateTimeを通信する最も簡単で効果的な方法は何ですか?

私はこれまで何もしたことがありませんIPC=それを読み始め、完全に混乱しました。Named Pipes今のところ最善の策のようですが、私はそれらの機能を理解するのに役立つものを見つけることができませんでした...私が見つけたのは、コメントが不十分なコードのチャンクまたは「チュートリアル」だけですway必要以上に深く、基本を明確にカバーしていない。

だから、良い基盤を確立することができなければ、私は少し行き詰まっています。 私のイベントで使用していたことを行う簡単なコミュニケーションを実装するための最良の方法は何ですか?また、その方法の基本をどこで学ぶことができますか?

編集:

いつものように、ここにいるすべての人は素晴らしく、迅速な対応に感謝します。ジェリーのリンクは、まさに私が必要とするものであることが判明しました(それが当時私が必要としていたことを知りませんでした)。

16
Kyle G.

名前付きパイプの概念に怯えないでください。WCFが厄介な部分を処理します。たとえば、HTTPを使用する代わりに、構成を行うだけでよく、それは単なる別の通信チャネルです。したがって、WCFを調べる必要があります。

チェックアウト このチュートリアル

7
Gerrie Schenck

言い換えると、サービスからアプリに基本的なDateTimeを伝達する最も簡単で効果的な方法は何ですか?

このシナリオでは 名前付きパイプ を使用する必要がありますが、他のオプション [〜#〜] msmq [〜#〜] 、webservicesを使用します。

3
Ehsan