2011-06-18 30 views
0

我想在web应用程序中定期在asp.net中运行调度过程。在asp.net的网络应用程序中包含调度

简单地说,我的数据库表有日期&期限Hrs.I要发送根据该计算来自然后另一个表得到更新(插入的记录1000)定期&也想运行邮件的过程中计算的预期日期时间对于相同的。

这是应该定期执行的预期预定过程。

回答

0

看看这个老文章从Jeff AtwoodEasy Background Tasks in ASP.NET

基本上,他认为,您使用缓存过期机制来安排定时任务。问题是:您的Web应用程序需要运行。如果网站根本没有被调用呢?那么,从IIS 7.5开始,您可以随时保持您的网络应用程序正常运行:auto starting web apps。杰夫在评论中表示,他的方法效果很好,直到他们超过了它。他的结论是,对于小型网站这是一个很好的方法。

+0

@Michel Overeem:我想要这个建议,这是更高效和简单的方法来做到这一点? – MayureshP

+0

@MayP我增加了一些东西。如何对投票中的某些答案进行投票?如果没有问题,那么请扩展你的问题来解释你正在寻找的更多东西。 –

+0

@MayP所以现在你有几个答案。如何对他们做出反应?提高投票或解释你缺少的东西。似乎你不会在你的问题上付出很多努力。 –

0

这里就是我所做的:

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(); 
    } 
+0

如果应用程序没有打开两天呢? – MayureshP

+0

@MayP:如果您拥有足够的权限,您可以将应用程序池超时设置为0.但是,如果不是(像我一样),则可以在您的站点中放置一个空网页,并设置另一个定时器来定期读取它,比如说每19分钟。 – nima

相关问题