zoukankan      html  css  js  c++  java
  • C#asp.net 每天的某时刻定时执行任务

    asp.net 每天的某时刻定时执行任务

    1、在Global.asax文件中 的 Application_Start 中定义一个线程

    void Application_Start(object sender, EventArgs e){
            // 在应用程序启动时运行的代码//定义一个线程
            System.Threading.Thread LoadServiceData = new System.Threading.Thread(new System.Threading.ThreadStart(LoadFromWebservice));
            LoadServiceData.Start();
    }
    
    

    2、线程中调用的方法

    private void LoadFromWebservice(){
            //定义一个定时器,并开启和配置相关属性
            System.Timers.Timer Wtimer = new System.Timers.Timer(1000);//执行任务的周期
            Wtimer.Elapsed += new System.Timers.ElapsedEventHandler(Wtimer_Elapsed);
            Wtimer.Enabled = true;
            Wtimer.AutoReset = true;
    }

    3、定时器Handler函数,其中写业务代码

     void Wtimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) {
            // 得到 hour minute second 如果等于某个值就开始执行某个程序。
            int intHour = e.SignalTime.Hour;
            int intMinute = e.SignalTime.Minute;
            int intSecond = e.SignalTime.Second;
            // 定制时间; 比如 在10:30 :00 的时候执行某个函数
            int iHour = 10;
            int iMinute =30;
            int iSecond = 00;
            // 设置 每天的10:30:00开始执行程序
            if (intHour == iHour && intMinute == iMinute && intSecond == iSecond)
            {
                BLL.GetWebServiceData getdata = new GetWebServiceData();
                getdata.AddSolid("2014-02-01");
            }
    }

    4、只要在使用 Timer,就必须保留对它的引用。对于任何托管对象,如果没有对 Timer 的引用,计时器会被垃圾回收。
    即使 Timer 仍处在活动状态,也会被回收。下面的代码是关键,可解决IIS应用程序池自动回收的问题

        void Application_End( object sender, EventArgs e ) {
                System.Threading.Thread.Sleep( 1000 );
                string RequestURL = "http://www.test.com/default.aspx";
                //这里设置你的web地址,可以随便指向你的任意一个aspx页面甚至不存在的页面,目的是要激发        Application_Start            
                System.Net.HttpWebRequest __HttpWebRequest = ( System.Net.HttpWebRequest ) System.Net.WebRequest.Create( RequestURL );
                System.Net.HttpWebResponse __HttpWebResponse = ( System.Net.HttpWebResponse ) __HttpWebRequest.GetResponse();
                System.IO.Stream __rStream = __HttpWebResponse.GetResponseStream();//得到回写的字节流  
                                                                                   //当不再需要计时器时,请使用 Dispose 方法释放计时器持有的资源。
                __rStream.Close();
                __rStream.Dispose();
            }

    参考:

    http://blog.sina.com.cn/s/blog_69e8baad0100x8zl

    http://blog.sina.com.cn/s/blog_4f52c70d0100oywo.html

  • 相关阅读:
    pycharm修改快捷键
    pycharm如何解决新建的文件没有后缀的问题
    创建py模板
    用ctrl+鼠标滚动调节字体大小
    pycharm调整代码长度分割线
    pycharm怎么设置代码自动补齐
    python3用BeautifulSoup抓取div标签
    python3用BeautifulSoup用re.compile来匹配需要抓取的href地址
    python3用BeautifulSoup用limit来获取指定数量的a标签
    python3用BeautifulSoup用字典的方法抓取a标签内的数据
  • 原文地址:https://www.cnblogs.com/grj001/p/12223763.html
Copyright © 2011-2022 走看看