因最近在写一个后端,需要定时查询数据库中的事项,是否有按时完成,所以写了一个定时发送函数。
1. 代码如下,
a. 调用 SetTimeOut 函数时要传入一个参数,单位 毫秒。
b. 可以在 10 点和12 点,准时执行对应的事项。
c. 你可以根据自己的需求修改。
public static void SetTimeOut(double interval)
{
System.Timers.Timer timer = new System.Timers.Timer(interval);//实例化Timer类,设置间隔时间;
timer.Elapsed += new System.Timers.ElapsedEventHandler(delegate (object sender, System.Timers.ElapsedEventArgs e)
{
timer.Enabled = true;
string hour = DateTime.Now.Hour.ToString();
if(hour=="10"){// 每天10点准时发送超过 2 天未结案的CAR 清单
if(sentX==0){
DailyReport();//这里是要执行的功能
sentX=9;
}
}else{
sentX=0;
}
if(hour=="12"){//每天12点 发送超CAR 提醒
if(Alertx==0){
CARAlert();// 分级提醒
Alertx=9;
}
}else{
Alertx=0;
}
});//到达时间的时候执行事件;
timer.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
timer.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;
}
2. 上述代码中 sentX 与 Alertx 需要在主类下提前声明静态公用变量。
public class ValuesController : ControllerBase
{
public static int sentX=0; //10点时发过了邮件就是0,否则就是1. 不是1 点变成 0;
public static int Alertx=0;//每天12 点,邮件提醒超期未处理的CAR
3. 需要在启动 WebAPI后做一次调用,就可以实现按时执行对应的事项。
[HttpGet]
public string Get(string title,string content)
{
SetTimeOut(5000); //WebAPI 开启计时功能;
4. 以上,看到此文章如有不清楚的内容,欢迎留言。