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

84 篇文章 0 订阅

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



  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值