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 { }
}
里面有注释大家自己看看吧,
有问题请回复我。
|