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

假设表包含此日期 tracker_Id | EMAIL_SENT_TIME | 最后检查 | next_check
100097 1800 日期时间 nextdatetime
100098 3600 日期时间 nextdatetime
100099 7200 日期时间 nextdatetime
100100 1800 日期时间 nextdatetime

1800 表示 30 分钟,3600 表示 1 小时等。

我想在 30 分钟后发送电子邮件,那些 EMAIL_SENT_TIME 是 1800 等等。

如何解决这个问题呢....

4

1 回答 1

0

每条记录的 EMAIL_SENT_TIME 列可以更改还是常量?在间隔上做某事的最简单方法之一是 System.Threading.Timer 类。第一个参数是回调函数(在这种情况下,每次间隔过去时发送一封电子邮件),然后是状态数据(这可能包含您要插入到每封电子邮件中的信息,偏移时间,最后一个是间隔。这个如果您的数据库 EMA​​IL_SENT_TIME 值发生更改,该类还允许您在 Timer 运行时更改间隔。

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

在 SendEmail() 函数中,您可以在 Last_Check 时间列中记录当前的 DateTime.Now。您实际上并不需要 Next_Check,因为您始终可以添加最后一次检查加上间隔来获得该值。

System.Threading.Timer

于 2012-06-15T18:39:47.647 回答