具有延迟c#的异步函数

时间:2012-01-28 07:46:53

标签: c# asp.net asynchronous timer

我有一个带按钮的网页。当用户按下按钮时,他会收到当前时间的电子邮件。我需要在60秒后异步发送给他另一条消息.. [他仍然按下按钮多少次他想要]

我该怎么做?

3 个答案:

答案 0 :(得分:1)

在查找之后就是答案

// 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

答案 1 :(得分:0)

你可以在客户端进行,就像@Holystream建议的那样,但是如果用户离开你的页面60秒就会失败,更不用说关闭浏览器了。

如果您不想创建自己的排队机制,可以尝试使用Windows Scheduler。只需创建一个任务即可访问将发送该电子邮件的应用程序中的URL。它可以与你合作没有很多这样的请求,如果分钟不是绝对关键的(你可以错过一点,调度程序不是为这样的分辨率而设计的)。

答案 2 :(得分:0)

您应该使用计划时间戳在DB中存储计划数据。

如果用户多次按下按钮,您可以在数据库中验证是否已存在符合条件的预定电子邮件,请忽略它。

您需要设置Cron Job(调度程序)服务来调用您的页面,如果已经过了预定的时间,它将从数据库中的数据发送电子邮件。

根据您需要的准确性,您需要为Cron Job设置较短的持续时间以发送电子邮件。

如果你想设置自己的调度程序服务,一个好的C#库是http://csharp-source.net/open-source/job-schedulers/quartz-net

希望这有帮助。