您当前的位置:五五电子网电子知识单片机-工控设备综合-其它Timer定时器的设计方法 正文
Timer定时器的设计方法

Timer定时器的设计方法

点击数:7485 次   录入时间:03-04 12:03:00   整理:http://www.55dianzi.com   综合-其它
分钟

      ///

      /// 毫秒

      public void setPeriod(int days, int hours, int minutes, int seconds, int milisecond)

      {

      period = new TimeSpan(days, hours, minutes, seconds, milisecond);

      }

      /**////

      /// 开始

      ///

      public void Start()

      {

      AutoResetEvent autoEvent = new AutoResetEvent(false);

      dueTime = TimeSpan.FromSeconds(0);

      period = TimeSpan.FromSeconds(10);

      iTimer = new Timer(timerDelegate, autoEvent, dueTime, period);

      autoEvent.WaitOne(5000, false);

      iTimer.Change(dueTime, period);

      }

      /**////

      /// 停止

      ///

      public void Stop()

      {

      iTimer.Dispose();

      }

      /**////

      /// 执行一次

      ///

      public void ExcuteOneTime()

      {

      if (iTimer != null)

      {

      iTimer.Dispose();

      }

      //如果 period 为零 (0) 或 -1 毫秒,而且 dueTime 为正,则只会调用一次 callback;

      //计时器的定期行为将被禁用,但通过使用 Change 方法可以重新启用该行为。

      setDueTime(0, 0, 0, 0, 1);

      setPeriod(0, 0, 0, 0, -1);

      AutoResetEvent autoEvent = new AutoResetEvent(false);

      iTimer = new Timer(timerDelegate, autoEvent, dueTime, period);

      autoEvent.WaitOne(5000, false);

      iTimer.Change(dueTime, period);

      }

      /**////

      /// 行为

      ///

      ///

      public void CheckStatus(object nObject)

      {

      AutoResetEvent autoEvent = (AutoResetEvent)nObject;

www.55dianzi.com

      if (ExcuteUpdate())

      {

      autoEvent.Set();

      }

      }

      /**////

      /// 更新

      ///

      ///

      private bool ExcuteUpdate()

      {

      try

      {

      //应该从数据库获得Paper对象的集合,这里简略

      //List paperList = getPaperList();

      List paperList = new List ();

      foreach (Paper item in paperList)

      {

      if (item.EndTime <= DateTime.Now)

      {

      if (item.Status == Paper.StatuSOFNormal)

      {

      item.Status = Paper.StatusOfTerminate;

      }

      }

      }

      /**/////执行数据更新,这里省略

      return true;

      }

      catch

      {

      return false;

      }

      }

      }

      这是问卷的实体类,只是简单的列出必要的属性。

      Paper实体类

      /**////

      /// 实体类

      ///

      publIC class Paper

      {

      /**////

      /// 终止时间

      ///

      public DateTime EndTime;

      /**////

      /// 状态

      ///

      public int Status;

      /**////

      /// 正常

      ///

      public const int StatusOfNormal = 1;

      /**////

      /// 终止

      ///

      public const int StatusOfTerminate = 2;

      /**////

      ///

      ///

      ///

      ///

      public Paper(int status, DateTime endTime)

      {

      Status = status;

      EndTime = endTime;

      }

      }



上一页  [1] [2] 


本文关键字:定时器  综合-其它单片机-工控设备 - 综合-其它