如何让asp.net应用程序定时自动执行代码
asp.net程序一般是當(dāng)用戶(hù)請(qǐng)求一個(gè)Page,或者請(qǐng)求一個(gè)WebService的時(shí)候,才會(huì)執(zhí)行一段代碼,如果我們希望讓程序定時(shí)自動(dòng)執(zhí)行代碼,但是又不增加新的應(yīng)用程序,應(yīng)該怎么做呢?
首先,給你的web應(yīng)用程序,添加一個(gè)“Global.asax”文件,這個(gè)類(lèi)里面默認(rèn)有一個(gè)“Application_Start”,我們就在這個(gè)方法里面添加定時(shí)程序的邏輯代碼。這樣,只要有一個(gè)人訪(fǎng)問(wèn)了這個(gè)web應(yīng)用,就會(huì)啟動(dòng)這個(gè)定時(shí)程序。
為了方便我們對(duì)定時(shí)程序的管理,我們單獨(dú)編寫(xiě)一個(gè)類(lèi),專(zhuān)門(mén)用于控制定時(shí)程序。這個(gè)類(lèi)中用的核心對(duì)象是System.Timers.Timer。下面說(shuō)一下這個(gè)類(lèi)設(shè)計(jì)的基本思路:ExecuteTask是一個(gè)公共的事件對(duì)象,以后調(diào)用者可以利用它來(lái)添加回調(diào)函數(shù)。_task是這個(gè)類(lèi)型的唯一靜態(tài)實(shí)例,調(diào)用者可以用Instance()方法讀取它。_timer就是實(shí)現(xiàn)定時(shí)運(yùn)行的對(duì)象,Interval是運(yùn)行的間隔時(shí)間。
public class Time_Task
{
??? public event System.Timers.ElapsedEventHandler ExecuteTask;
??? private static readonly Time_Task _task = null;
??? private System.Timers.Timer _timer = null;
??? private int _interval = 1000;
??? public int Interval
??? {
??????? set
??????? {
??????????? _interval = ;
??????? }
??????? get
??????? {
??????????? return _interval;
??????? }
??? }
??? static Time_Task()
??? {
??????? _task = new Time_Task();
??? }
??? public static Time_Task Instance()
??? {
??????? return _task;
??? }
??? public void Start()
??? {
??????? if(_timer == null)
??????? {
??????????? _timer = new System.Timers.Timer(_interval);
??????????? _timer.Elapsed += new System.Timers.ElapsedEventHandler(_timer_Elapsed);
??????????? _timer.Enabled = true;
??????????? _timer.Start();
??????? }
??? }
??? protected void _timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
??? {
??????? if(null != ExecuteTask)
??????? {
??????????? ExecuteTask(sender, e);
??????? }
??? }
??? public void Stop()
??? {
??????? if(_timer != null)
??????? {
??????????? _timer.Stop();
??????????? _timer.Dispose();
??????????? _timer = null;
??????? }
??? }
}
有了這個(gè)類(lèi)型,我們可以在A(yíng)pplication_Start方法中輕松的實(shí)現(xiàn)定時(shí)了。
protected void Application_Start(object sender, EventArgs e)
{
??? Time_Task.Instance().ExecuteTask += new System.Timers.ElapsedEventHandler(Global_ExecuteTask);
??? Time_Task.Instance().Interval = 1000 * 60;//表示間隔1分鐘
??? Time_Task.Instance().Start();
}
void Global_ExecuteTask(object sender, System.Timers.ElapsedEventArgs e)
{
??? //在這里編寫(xiě)需要定時(shí)執(zhí)行的邏輯代碼
}
需要注意的是,當(dāng)你重新部署web應(yīng)用的時(shí)候,比如更新了DLL文件,或者修改了web.config文件,就會(huì)中止這個(gè)定時(shí)程序,需要有人再次請(qǐng)求Page,才能把它啟動(dòng)起來(lái)。
總結(jié)
以上是生活随笔為你收集整理的如何让asp.net应用程序定时自动执行代码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
                            
                        - 上一篇: 工行融e借上信报有什么影响
 - 下一篇: 个税等级