これを行う最も簡単な方法は、作成したアプリケーションでこれを実現しようとするのではなく、SQLServerエージェントで新しいジョブを作成してストアドプロシージャを毎日呼び出すことです。
SQLジョブの作成の詳細については、次のリンクを参照してください
編集-申し訳ありませんが、他の作業をしているときにSOの投稿に答えようとしないでください。私はあなたが電子メールを送りたいという事実を完全に見逃し、あなたが画面上で期限切れの記録を報告したいということを頭に浮かびました。ええと。
毎日特定の時間に期限切れの電子メールを送信するには、Windowsサービスが確実に機能すると思いますが、少しやり過ぎのようであり、実行中のサーバーを完全に制御する必要があります。
代わりに、sendOverdueMail.aspx Webページを毎日呼び出して作業を行うようにスケジュールされたタスクを設定できますか?このような
明らかに、SQL Serverエージェントの電子メールオプションもありますが、生成される電子メールの形式をどの程度制御できるかはわかりません。
最後に、このチュートリアルでは、ASP.netサーバーでキャッシュの有効期限イベントをフックして、スケジュールされたタスクタイプの効果を作成します。これにより、電子メールコードを呼び出すことができます。
private const string DummyCacheItemKey = "GagaGuguGigi";
protected void Application_Start(Object sender, EventArgs e)
{
RegisterCacheEntry();
}
private bool RegisterCacheEntry()
{
if( null != HttpContext.Current.Cache[ DummyCacheItemKey ] ) return false;
HttpContext.Current.Cache.Add( DummyCacheItemKey, "Test", null,
DateTime.MaxValue, TimeSpan.FromMinutes(1),
CacheItemPriority.Normal,
new CacheItemRemovedCallback( CacheItemRemovedCallback ) );
return true;
}
public void CacheItemRemovedCallback( string key,
object value, CacheItemRemovedReason reason)
{
Debug.WriteLine("Cache item callback: " + DateTime.Now.ToString() );
// send reminder emails here
DoWork();
}