具有延迟c#的异步函数
本文关键字:异步 函数 延迟 | 更新日期: 2023-09-27 18:21:36
我有一个带按钮的网页。当用户按下按钮时,他会收到当前时间的电子邮件。我需要在异步60秒后再给他发一条消息。。[他仍然可以按按钮多少次]
我该怎么做?
查找后,这里是答案
// Wait X Sec and then try to send message
System.Timers.Timer t = new System.Timers.Timer();
t.Interval = Convert.ToDouble(ConfigurationManager.AppSettings["timer"]);
t.Elapsed += delegate { /*your function here */};
t.Start();
t.AutoReset = false; // do it once
正如@Holystream所建议的那样,您可以在客户端进行操作,但如果用户在60秒内离开您的页面,那将失败,更不用说关闭浏览器了。
如果您不想创建自己的排队机制,可以尝试使用Windows计划程序。只需创建一个任务,该任务将访问将发送该电子邮件的应用程序中的URL。如果你没有太多这样的请求,如果这一分钟不是绝对关键的(你可能会错过一点,调度器不是为这样的分辨率而设计的),它就会起作用。
您应该将计划的数据存储在带有计划时间戳的DB中。
如果用户多次按下按钮,您可以在数据库中验证是否已经存在预定的电子邮件,以满足条件忽略它
您需要设置Cron Job(Scheduler)服务来呼叫您的页面,如果计划的时间过去了,该页面将从数据库中的数据发送电子邮件。
根据您需要的准确性,您需要为Cron Job设置更短的发送电子邮件的持续时间。
如果你想设置自己的调度程序服务,一个好的C#库是http://csharp-source.net/open-source/job-schedulers/quartz-net.
希望这能有所帮助。