我想在web应用程序中定期在asp.net中运行调度过程。在asp.net的网络应用程序中包含调度
简单地说,我的数据库表有日期&期限Hrs.I要发送根据该计算来自然后另一个表得到更新(插入的记录1000)定期&也想运行邮件的过程中计算的预期日期时间对于相同的。
这是应该定期执行的预期预定过程。
我想在web应用程序中定期在asp.net中运行调度过程。在asp.net的网络应用程序中包含调度
简单地说,我的数据库表有日期&期限Hrs.I要发送根据该计算来自然后另一个表得到更新(插入的记录1000)定期&也想运行邮件的过程中计算的预期日期时间对于相同的。
这是应该定期执行的预期预定过程。
您可以使用窗口服务的研究背景和调度工作,请参阅以下链接:
看看这个老文章从Jeff Atwood: Easy Background Tasks in ASP.NET
基本上,他认为,您使用缓存过期机制来安排定时任务。问题是:您的Web应用程序需要运行。如果网站根本没有被调用呢?那么,从IIS 7.5开始,您可以随时保持您的网络应用程序正常运行:auto starting web apps。杰夫在评论中表示,他的方法效果很好,直到他们超过了它。他的结论是,对于小型网站这是一个很好的方法。
@Michel Overeem:我想要这个建议,这是更高效和简单的方法来做到这一点? – MayureshP
@MayP我增加了一些东西。如何对投票中的某些答案进行投票?如果没有问题,那么请扩展你的问题来解释你正在寻找的更多东西。 –
@MayP所以现在你有几个答案。如何对他们做出反应?提高投票或解释你缺少的东西。似乎你不会在你的问题上付出很多努力。 –
Quartz.NET job scheduler library非常适合这种事情。
这里就是我所做的:
public class Email {
private static System.Threading.Timer threadingTimer;
public static void StartTimer()
{
if (threadingTimer == null)
threadingTimer = new Timer(new TimerCallback(Callback), HttpContext.Current, 0, 20000);
}
private static void Callback(object sender)
{
if (/* Your condition to send emails */)
using (var context = new MyEntities())
{
var users = from user in context.Usere
select user;
foreach (var user in users)
{
// Send an email to user
}
}
}
}
而且你必须把它添加到的Application_Start:
void Application_Start(object sender, EventArgs e)
{
EMail.StartTimer();
}
确定。检查另一个 – Saurabh