この例に従って、セルフホステッド WCF サービスを作成しています。理想的には、データベースで特定の値が更新されているかどうかを30分ごとにチェックするタイマーをサービスに接続し、そうであればサービスが何らかのタスクを実行する場合、30分ごとにチェックし続けます。IIS でホストされている WCF でタイマーを使用することはお勧めできないことをオンラインで読みましたが、自己ホスト型の wcf サービスで使用するのはどうですか? 例はありますか?
ありがとう、
値が更新された場合にタスクを実行する単純なコンソール アプリを作成し、このコンソール アプリを 30 分ごとに実行するスケジュールされたタスクを Windows で作成することをお勧めします。そうすれば、Windows にタイミング部分を管理させることができ、DB をチェックして必要に応じて更新するコードを書くだけで済みます。
実行している Windows のバージョンは不明ですが、コントロール パネルからスケジュールされたタスクにアクセスできます。
IIS がホストする WCF サービスのタイマーが「良い考えではない」理由は、IIS サービスの有効期間が自己ホスト型サービスとは大きく異なるためです。詳細については、このSO の質問と回答を参照してください。詳細については、このMSDN の記事を参照してください。
基本的に、タイムアウト期間内に誰も接続していない場合、WCF サービスは IIS 内でホストされている間に "シャットダウン" できます。説明しているような定期的な定期メンテナンスが必要な場合は、自己ホスト型サービスを使用し、そのサービスがOnStart()
呼び出しで 30 分ごとに起動するタイマーを開始する必要があります。