asp.net web 定时执行任务 定时器 Global.asax
web网站里面,需要每隔1分钟,执行一个任务,并且一直保持这个定时执行状态,可以用如下一个方法:
以下代码是 Global.asax.cs 的全部代码。
using System; using System.Xml; namespace Web.SSART.Site { public class Global : System.Web.HttpApplication { protected void Application_Start(object sender, EventArgs e) { // 在应用程序启动时运行的代码 TimeTask.Instance().ExecuteTask += new System.Timers.ElapsedEventHandler(Global_ExecuteTask); TimeTask.Instance().Interval = 10000 * 10;//表示间隔 TimeTask.Instance().Start(); } void Global_ExecuteTask(object sender, System.Timers.ElapsedEventArgs e) { //在这里编写需要定时执行的逻辑代码 XmlDocument xmldoc = new XmlDocument(); XmlNode xmlnode = xmldoc.CreateNode(XmlNodeType.XmlDeclaration, "", ""); xmldoc.AppendChild(xmlnode); XmlElement xmlelem = xmldoc.CreateElement("", "urlset", ""); xmldoc.AppendChild(xmlelem); //加入另外一个元素 for (int i = 1; i < 4; i++) { XmlNode root = xmldoc.SelectSingleNode("urlset"); XmlElement xe1 = xmldoc.CreateElement("url" + i); XmlElement xesub1 = xmldoc.CreateElement("loc"); xesub1.InnerText = "http://www.ssart.net/news/news_16702.html"; xe1.AppendChild(xesub1); XmlElement xesub2 = xmldoc.CreateElement("lastmod"); xesub2.InnerText = DateTime.Now.ToString(); xe1.AppendChild(xesub2); XmlElement xesub3 = xmldoc.CreateElement("changefreq"); xesub3.InnerText = "always"; xe1.AppendChild(xesub3); XmlElement xesub4 = xmldoc.CreateElement("priority"); xesub4.InnerText = "always"; xe1.AppendChild(xesub4); XmlElement xesub5 = xmldoc.CreateElement("data"); XmlElement xesub6 = xmldoc.CreateElement("display"); XmlElement xesub7 = xmldoc.CreateElement("xhtml_url"); xesub7.InnerText = "always"; xesub6.AppendChild(xesub7); xesub5.AppendChild(xesub6); xe1.AppendChild(xesub5); root.AppendChild(xe1);//添加到<Employees>节点中 } //保存创建好的XML文档 xmldoc.Save("d://data.xml"); } 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) { } protected void Application_End(object sender, EventArgs e) { } } //创建一个定时器的类 public class TimeTask { public event System.Timers.ElapsedEventHandler ExecuteTask; private static readonly TimeTask _task = null; private System.Timers.Timer _timer = null; //定义时间 private int _interval = 60000; public int Interval { set; get; } static TimeTask() { _task = new TimeTask(); } public static TimeTask 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; } } } }