ASP.NET MVC计划任务实现方法(定时执行某个功能)

Posted 性能、可用性、伸缩性、扩展性、安全性、可监控是网站架构最核心

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET MVC计划任务实现方法(定时执行某个功能)相关的知识,希望对你有一定的参考价值。

系统中定时执行某个任务是比较常用的功能,如一个部门定期向上级部门上报数据是一个典型的例子,下面就简单说说在.net mvc中如何实现定时执行某个功能的方法。

1、首先修改Glocal.asax文件,在Application_Start方法最下面加入:

//定义定时器
//1000表示1秒的意思
System.Timers.Timer myTimer = new System.Timers.Timer(1000);
//TaskAction.SetContent 表示要调用的方法
myTimer.Elapsed += new System.Timers.ElapsedEventHandler(TaskAction.SetContent);
myTimer.Enabled = true;
myTimer.AutoReset = true;

以上代码在应用程序启动时运行

2、在Glocal.asax文件中加入如下方法:

 

void Session_End(object sender, EventArgs e)
{
    //下面的代码是关键,可解决IIS应用程序池自动回收的问题
    System.Threading.Thread.Sleep(1000);
    //触发事件, 写入提示信息
    TaskAction.SetContent();
    //这里设置你的web地址,可以随便指向你的任意一个aspx页面甚至不存在的页面,目的是要激发Application_Start
    //使用您自己的URL
    string url = "http://localhost:3813";
    System.Net.HttpWebRequest myHttpWebRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
    System.Net.HttpWebResponse myHttpWebResponse = (System.Net.HttpWebResponse)myHttpWebRequest.GetResponse();
    System.IO.Stream receiveStream = myHttpWebResponse.GetResponseStream();//得到回写的字节流
 
    // 在会话结束时运行的代码。
    // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为 InProc 时,才会引发 Session_End 事件。
    // 如果会话模式设置为 StateServer
    // 或 SQLServer,则不会引发该事件。
}

 

3、创建以上两个方法用到的类:

 

public static class TaskAction
{
    private static string content = "";
    /// <summary>
    /// 输出信息存储的地方.
    /// </summary>
    public static string Content
    {
        get { return TaskAction.content; }
        set { TaskAction.content += "<div>" + value + "</div>"; }
    }
    /// <summary>
    /// 定时器委托任务 调用的方法
    /// </summary>
    /// <param name="source"></param>
    /// <param name="e"></param>
    public static void SetContent(object source, ElapsedEventArgs e)
    {
        if (DateTime.Now.ToString("HH:mm:ss") == "11:35:00")
        {
            //这里写你定时执行的代码
            Content = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"+"下班了!");
        }
    }
    /// <summary>
    /// 应用池回收的时候调用的方法
    /// </summary>
    public static void SetContent()
    {
        Content = "END: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
    }
}

 

 

 

 

以上是关于ASP.NET MVC计划任务实现方法(定时执行某个功能)的主要内容,如果未能解决你的问题,请参考以下文章

在 ASP.NET MVC 网站中运行计划任务

2步轻松实现ASP.NET Core托管服务执行定时任务

asp.net 定时器 定时执行任务

在asp.net mvc 3中的后台作业/计划任务中发送电子邮件

asp.net 间隔一段时间执行某方法

crond守护进程实现定时监控某进程占有内存的大小