独上高楼网站
  •    你所在位置:首页 VS.netASP.net基础知识〉在System.timers.timer中给定时器触发的Elapsed事件传递参数
  • 在System.timers.timer中给定时器触发的Elapsed事件传递参数
  • 作者:佚名  文章来源:网上下载  发布日期:2007-10-14  浏览次数:1026
  • 打印这篇文章
  •         一个项目中用到大量的定时器,用来做定时的任务。比如定时给某个客户发送短信之类的。现在定时器触发事件之后需要给事件传递一个参数过去。其中可能包括这个任务的一些必需的信息,System.Timers.Timer的事件处理方法如下:

      public abstract void TimerEvent(object sender, ElapsedEventArgs e); 

    先看了看 timer,和ElapsedEventArgs 中有没有能利用起来的属性。发现不可能。

    于是 打算继承 ElapsedEventArgs ,用来传递参数。但是找不到设置timer发送继承之后的ElapsedEventArgs 的方法,这种办法也不行。

    最后继承System.Timers.Timer

    using System;

    namespace TaskSchedulerManager
    {
     ///


     /// 自定义定时器
     ///
     public class TaskTimer : System.Timers.Timer
     {
      #region <变量>
      ///
      /// 定时器id
      ///
      private int id;
      ///
      /// 定时器参数
      ///

     private  string param ;
      #endregion

      #region <属性>
      ///


      /// 定时器id属性
      ///
      public int ID
      {
       set{id = value;}
       get{return id;}
      }
      ///
      /// 定时器参数属性
      ///
      public string Param
      {
       set{param = value;}
       get{return param;}
      }
      #endregion

    ///


      /// 构造函数
      ///
      public TaskTimer() : base ()
      {

      }
     
     }
    }

    然后在事件处理方法中:将sender 转型为System.timers.timer

    ///


      /// timer  Elapsed事件的处理方法
      ///
      ///
      ///
    public override void TimerEvent(object sender, System.Timers.ElapsedEventArgs e)
      {
       //Console.WriteLine("DllTwo:" + DateTime.Now.ToString());

     

     TaskSchedulerManager.TaskTimer tt = (TaskTimer)sender;
       Console.WriteLine("id : " + tt.ID);
       Console.WriteLine("Param: " + tt.Param);
      }

     

  • 打印这篇文章
  • 与本文主题相关的文章
  • 返回首页