私は常に実行されているWindowsサービスを持っており、15分ごとに何らかのアクションを実行します。また、サービスの実行内容に関する情報を表示するクライアントWinFormsアプリもあります。フォームアプリケーションが最新のステータスで更新されているようにしたいのですが、毎秒ポーリングすることがパフォーマンスの面で良い動きかどうかはわかりません。
- 起動すると、Windowsサービスは(クライアントフォームから)クエリを受信するためにパイプという名前のWCFを開きます
- 毎秒、winformのタイマーがパイプにクエリを送信し、結果を表示します。パイプがない場合、フォームにはサービスが実行されていないことが表示されます。
これを行うための最良の方法ですか?サービスの開始時にパイプを開いた場合、パイプは常に開いたままになりますか(閉じるかサービスが停止するまで)?サービスのポーリングに加えて、処理の開始や停止など、特定のイベントを監視アプリケーションに通知する方法があるのではないでしょうか。そうすれば、おそらくすでに大きなイベントについて知っていて、進行状況をポーリングするだけなので、ポーリングを減らすことができます。
私が欠けているものはありますか?