いくつかの選択肢がありますが、私があなただったら、最初か 2 番目の選択肢を選びます。
コンソール アプリとスケジューラ
実行されるたびにチェックを実行するコンソール アプリケーションを作成します。次に、Windows スケジューラを使用して毎日 (00:05)、または必要に応じて 1 時間ごとに実行します。このようにして、Windows スケジューラ デーモンは 1 時間ごとに起動し、残りの時間はアプリが実行されていません。
Windows でスケジュールされたタスクがどのように作成されるかを確認するには、このMicrosoft リンクを確認してください。
Restful Web サービスとスケジューラ
@marapet の回答で示唆されているように、コンソール アプリケーションの代わりにこのアクションを実行できる安らかな Web サービスを使用すると、Web アプリケーションにすべてのコードを含めることができるという利点があります。
前のものと同様に、アクションを実行するには安静な uri のみを呼び出す必要があります。考えられる欠点として、エンド ユーザーがその uri にアクセスできないことを確認する必要があります。通常のアーキテクチャ (Web サーバー --> アプリケーション サーバー --> DB) では、この安らかなサービスは、エンド ユーザー アクセスから遠く離れたアプリケーション サーバーに配置する必要があります。
Windows サービス
別のオプションは、常に実行され、時間自体をチェックするWindows サービスを作成して、1 時間ごとにジョブを実行することです (おそらく Quartz などを使用します)。しかし、これはパフォーマンス要件を満たしていません。
いずれにせよ、サービスは 1 時間が経過したかどうかを毎分チェックし、その仕事を行う時間になったかどうかを確認する必要があるため、パフォーマンスへの影響は小さくなります。タスクは非常に簡単です。
利点は、Windows サービスはスケジュールされたタスクよりも制御と監視が容易であることです。
DB ジョブ
さらに別のオプション... アプリで SQL Server を使用している場合は、毎日または毎時間実行される t-sql ジョブを使用できます。本当にパフォーマンスの問題がない限り、このオプションはお勧めしません。
これに関する問題は、コードのロジックと責任を分割することになることです。将来の開発者や管理者は、アプリを維持するのが難しくなります。