在 Windows 服务中按特定时间间隔发送电子邮件

本文关键字:电子邮件 定时间 Windows 服务 | 更新日期: 2023-09-27 18:37:17

我正在使用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 |Last_check |
next_check 100097 1800 日期时间 下一个日期时间
100098 3600 日期时间 下一个日期时间
100099 7200 日期时间 下一个日期时间
100100 1800 日期时间 下一个日期时间

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

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

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

在 Windows 服务中按特定时间间隔发送电子邮件

每条记录的EMAIL_SENT_TIME列可以更改还是常量?在间隔上执行某些操作的最简单方法之一是 System.Threading.Timer 类。第一个参数是回调函数(在本例中,每次间隔经过时发送电子邮件),然后是状态数据(这可能包含要插入到每封电子邮件中的信息、偏移时间,最后一个是间隔。此类还允许您在数据库EMAIL_SENT_TIME值发生更改时更改计时器运行时的间隔。

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

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

系统线程.计时器