zoukankan      html  css  js  c++  java
  • ASP.Net定时任务执行

    原料:

    System.Timers.Timer():通过.NET  Thread  Pool实现的,轻量,计时精确,对应用程序、消息没有特别的要求;缺点是不支持直接的拖放,需要手工编码。

    Timer的主要属性:

    1、Interval:引发Elapsed事件的间隔;

    2、Elapsed:达到间隔发生的事件;

    3、Enabled:指示Timer是否应引发Elapsed事件;

    设计:

    一、TaskBase,任务基类

    1、字段:

    a、TimeMode,任务类型分为周期型和时刻型;

    b、LastStartTime

    2、属性:

    a、NextStartTime,只读属性

    if (this.TimeMode == 0)
    {
      if (this.LastStartTime == DateTime.MinValue)
      {
        return DateTime.MinValue;
      }
      return this.LastStartTime.AddSeconds((double)this.MinPeriod);
    }
    if (this.LastStartTime == DateTime.MinValue)
    {
      return this.TheFixedNextStartTime;
    }
    return this.LastStartTime.AddDays(1.0).Date.AddHours((double)this.Hour).AddMinutes((double)this.Minute);

    b、TheFixedNextStartTime,只读属性

    if (this._theFixedNextStartTime == DateTime.MinValue)
    {
      this._theFixedNextStartTime = DateTime.Today.AddHours((double)this.Hour).AddMinutes((double)this.Minute);
      if (((SystemStartTime.Hour * 100) + SystemStartTime.Minute) > ((this.Hour * 100) + this.Minute))
      {
        this._theFixedNextStartTime = this._theFixedNextStartTime.AddDays(1.0);
      }
    }
    return this._theFixedNextStartTime;

    3、方法:

    1、Execute:任务的具体执行

    2、Run:任务运行

    this.LastStartTime = DateTime.Now;

    this.Execute();

    二、TaskMonitor:任务监控

    1、方法

    a、Execute:Timer.Elapsed事件  

    if (TimeMode == 1)
    {
      flag = DateTime.Now >= base2.NextStartTime;
    }
    else
    {
      flag = ((base2.TickCount == 0) && (base2.LastStartTime == DateTime.MinValue));
      if (!flag)
      {//定时器的运行间隔和任务运行间隔的比较
        base2.TickCount += CheckPeriod;
        flag = base2.TickCount >= base2.MinPeriod;
      }
      if (flag)
      {
        base2.TickCount = 0;
      }
    }
    if (flag)
      Thread.RunMethod(new ThreadStart(base2.Run));

          

  • 相关阅读:
    BorderContainer 背景透明一不小心就解决了!
    C#编程应用线程与委托
    第二次SQL RAP要点
    最近的学习
    BW中传输的问题
    7月总结Dotnetnuke的研究总结
    EP学习要点记忆
    盲人摸象SAP PS模块的介绍与讨论
    如何跨Client删除数据
    如何修改Portal与BW系统的链接域名
  • 原文地址:https://www.cnblogs.com/wrjhome/p/4517388.html
Copyright © 2011-2022 走看看