0

Visual Studio 2010 と Database Sql Server 2010 を使用しています。

時間間隔が発生したときに電子メールを送信する必要があるウィンドウ サービスを作成しました (EMAIL_SENT_TIME)

マイ データベースには、この列が含まれています

    Tracker_Id bigint 
,EMAIL_SENT_TIME bigint --this contains interval in which the email must be fired 1800,3600,7200 etc, 
    Last_check datetime --the previous check datetime,
    next_check datetime --the next check datetime

テーブルにこの日付が含まれていると仮定します。EMAIL_SENT_TIME | Last_check | next_check
100097 1800 日時 nextdatetime
100098 3600 日時 nextdatetime
100099 7200 日時 nextdatetime
100100 1800 日時 nextdatetime

1800 は 30 分、3600 は 1 時間などを意味します。

EMAIL_SENT_TIME が 1800 などの 30 分後にメールを送信したい。

この問題を解決する方法....

4

1 に答える 1

0

EMAIL_SENT_TIME 列はレコードごとに変更できますか、それとも定数ですか? 一定の間隔で何かを行う最も簡単な方法の 1 つは、System.Threading.Timer クラスです。最初のパラメータはコールバック関数 (この場合、間隔が経過するたびに電子メールを送信するため)、次に状態データ (これには、各電子メールに挿入する情報、オフセット時間、および最後の間隔が含まれる可能性があります) です。クラスを使用すると、データベースの EMAIL_SENT_TIME 値が変更された場合にタイマーの実行中に間隔を変更することもできます。

Timer timer = new Timer((x) => SendEmail(), null, 0, EMAIL_SENT_TIME * 1000).

SendEmail() 関数では、現在の DateTime.Now を Last_Check 時刻列に記録できます。Next_Check は、最後のチェックと間隔をいつでも追加してその値を取得できるため、実際には必要ありません。

System.Threading.Timer

于 2012-06-15T18:39:47.647 に答える