zoukankan      html  css  js  c++  java
  • 计时器Timer介绍

    计时器用于到指定时间调用委托(或说执行方法),或定时调用委托。

    (一)   Timer

    名字空间:System.Threading

    它主要提供在指定时间间隔内循环执行方法。

    它的构造方法有多个,以其中一个为例:

    public Timer(TimerCallback callback,Object state,int dueTime,int period)

    四个参数分别表示:

    要执行的方法;包括回调方法中要使用的信息的对象;在调用执行的方法之前的延迟时间(毫秒);调用回调方法的时间间隔(毫秒)

    TimerCallback的定义为:

    public delegate void TimerCallback(Object state)

     

    示例:

     

    static void Main(string[] args)  
    {  
        
    int k = 19
     
        Timer timer1 
    = new Timer(new TimerCallback(PrintMessage), k, 20005000); 
     
        Console.Read();  

     
    static void PrintMessage(object objState) 
    {  
        Console.WriteLine(
    "ok1" + " " + objState.ToString());  
    }  
     

     

    设置2000毫秒后开始调用执行方法,每5000毫秒执行一次,并把k传递到执行方法(callback委托)

    说明:2000毫秒后首次执行一次回调方法,然后每5000毫秒后再执行。

    回调委托类型已经给出,在使用时可以Action委托或lambda表达式或匿名委托来定义,如下:

    Action<object> ffun = delegate(object o)
    {
        Console.WriteLine(
    "ok3"+" "+o.ToString());
    };

    Timer timer2 
    = new Timer(new TimerCallback(q => Console.WriteLine("ok2" + " " + q.ToString())), k, 20005000);
    Timer timer3 
    = new Timer(new TimerCallback(ffun), k, 20005000);
     

     

    如果终止计时器,可以使用public void Dispose()方法

    例如:设置定时器,2秒钟后开始,每2秒调用一次,然后在调用5次(首次除外)后释放计时器。

    static int k = 1;
    static Timer timer1;
    static void Main(string[] args)
    {
        timer1 
    = new Timer(new TimerCallback(PrintMessage), k, 20002000);
        Console.Read();


    static void PrintMessage(object objState)
    {    
        Console.WriteLine(
    "ok1" + " " + k.ToString());

        
    if (k > 5) timer1.Dispose();
        k
    ++;
    }

     

    (二)   System.Timers.Timer

    在应用程序中生成定时事件。它有一个属性:AutoReset

    public bool AutoReset { get; set; }

    用于设定每次指定的间隔结束时引发 Elapsed 事件,还是仅在指定的间隔第一次结束后引发该事件。

    重要成员说明:

    Interval:设置时间间隔,单位毫秒

    Enabled:是否引发Elapsed事件

    Elapsed:事件

    public event ElapsedEventHandler Elapsed

    其中事件类型:

    public delegate void ElapsedEventHandler(Object sender,ElapsedEventArgs e)

    senderTimereventargs的重要属性为:public DateTime SignalTime { get; }

    用于触发计时事件的时间。

    示例:

    static void Main(string[] args)
    {   
        System.Timers.Timer timer1 
    = new System.Timers.Timer();

        timer1.Elapsed 
    += new System.Timers.ElapsedEventHandler(OnTimedEvent);

        timer1.Interval 
    = 2001;
        timer1.Enabled 
    = true;
        timer1.AutoReset 
    = true

        Console.Read();
    }
     

    static void OnTimedEvent(object source, System.Timers.ElapsedEventArgs e)
    {

        System.Timers.Timer tempTimer 
    = source as System.Timers.Timer;

        Console.WriteLine(tempTimer.Interval);
        Console.WriteLine(e.SignalTime);
    }

     

    打印内容略。

     

    (三)   System.Windows.Forms.Timer

    用在winform中,且必须用于窗口。略。

     

     

  • 相关阅读:
    CSS知识(18---21.CSS完毕)
    CSS 知识(13---)
    CSS编辑知识 ( 1---12 )
    CSS 选择器
    前端CSS
    修建泳池的题解
    2020-3-7模拟赛题解
    奶牛排队的题解
    数的拆分的题解
    青蛙王子的题解
  • 原文地址:https://www.cnblogs.com/jams742003/p/1970003.html
Copyright © 2011-2022 走看看