asp.net定时执行方法在Global全局应用程序中实现 
 
 
我想做的就是这样一个功能, 
实现一个定时执行一个方法的功能, 
其实就是定时执行一时固定的操作 
这个我要借助Global文件来实现, 
大家看看我的实现方法吧。 
[C#] 纯文本查看 复制代码 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using System.Timers;
using System.Net;
using System.IO;
using System.Threading;
namespace Request
{
    public class Global : System.Web.HttpApplication
    {
        protected void Application_Start(object sender, EventArgs e)
        {
            //定时器  
            System.Timers.Timer comTimer = new System.Timers.Timer(10000);
            comTimer.Elapsed += new ElapsedEventHandler(comTimer_Elapsed);
            comTimer.Enabled = true;
            comTimer.AutoReset = true;
        }
        
        void comTimer_Elapsed(object source, ElapsedEventArgs e)
        {
            try
            {
                //执行内容
            }
            catch { }
        }
        protected void Application_End(object sender, EventArgs e)
        {
            try
            {
                //下面的代码是关键,可解决IIS应用程序池自动回收的问题
                Thread.Sleep(1000);
                //这里设置你的web地址,可以随便指向你的任意一个aspx页面甚至不存在的页面,目的是要激发Application_Start  
                string url = "http://www.sufeinet.com/Login.aspx ";
                HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
                HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
                Stream receiveStream = myHttpWebResponse.GetResponseStream();//得到回写的字节流  
            }
            catch { }
        }
        protected void Session_Start(object sender, EventArgs e)
        {
        }
        protected void Application_BeginRequest(object sender, EventArgs e)
        {
        }
        protected void Application_AuthenticateRequest(object sender, EventArgs e)
        {
        }
        protected void Application_Error(object sender, EventArgs e)
        {
        }
        protected void Session_End(object sender, EventArgs e)
        {
        }
    }
} 
这样就行了,这样每过10000毫秒会执行一次void comTimer_Elapsed(object source, ElapsedEventArgs e)这个方法。 
为了解决IIS回收的后不执行的问题我还增加了这样一个功能大家请看 
[C#] 纯文本查看 复制代码 protected void Application_End(object sender, EventArgs e)
{
try
{
//下面的代码是关键,可解决IIS应用程序池自动回收的问题
Thread.Sleep(1000);
//这里设置你的web地址,可以随便指向你的任意一个aspx页面甚至不存在的页面,目的是要激发Application_Start 
string url = "http://www.sufeinet.com/Login.aspx ";
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
Stream receiveStream = myHttpWebResponse.GetResponseStream();//得到回写的字节流 
}
catch { }
} 
里面有注释大家自己看看吧, 
有问题请回复我。 
 |