如何创建服务器端定时事件?

时间:2009-03-13 14:54:58

标签: c# .net-3.5

我正在为一个新的网络应用程序开发一个项目。我正在确定功能的关键点,而我明确不知道如何处理的一件事如下:

每分钟一次,服务器需要对其数据运行一系列计算,并发布新的派生摘要。

所以从本质上讲,我需要的是一种每分钟运行一次服务器端脚本的方法,即使在用户不活动时也是可靠的。

我正在使用ASP.NET 3.5,C#作为Web界面。使用SQL 2005进行数据后端处理。

我认为所有被更改的数据都是SQL端,因此如果更可行,脚本可以在那里完全运行。

感谢您的任何建议。

4 个答案:

答案 0 :(得分:2)

将项目放在缓存中,并且分钟到期。确保为项目删除时为其分配回调方法。一分钟后,项目将被删除,您的回叫将运行。你在那里填充然后再将项目添加到缓存中。

答案 1 :(得分:1)

网站上的“后台”处理有两种选择。您不能将其作为网站的一部分,而是在Windows服务中执行(可以使用相同的业务对象)或者您可以在Web应用程序中启动的后台线程中执行此操作。我们既使用了成功,又使用了不同的地方。在我们的Application_Start中,我们执行:

//Submit background thread to update time left hospital
System.Threading.Thread checkoutThread = 
  new System.Threading.Thread(BackgroundThread.CheckoutUpdate);
checkoutThread.IsBackground = true;
checkoutThread.Priority = System.Threading.ThreadPriority.BelowNormal;
checkoutThread.Start();

其中BackgroundThread.CheckoutUpdate定义为public static void CheckoutUpdate()

答案 2 :(得分:1)

你不能只使用System.Timers吗?

using System;
using System.Timers;
namespace App
{
    class Program
    {
        static void TimerEvent(object s,ElpasedEventArgs arg)
        {
            //handle your stuff here
        }
        static void Main()
        {
            Timer t = new Timer(60000); //60 seconds * 1000 = 60.000
            t.Elapsed += new ElapsedEventHandler(TimerEvent);
            t.Start();
        }
    }
}

万一你不知道..

答案 3 :(得分:0)

让Sql Server完成所有操作。创建存储过程以执行操作,并在企业管理器中设置作业 - >管理 - >工作。告诉作业调用存储过程。