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中,且必须用于窗口。略。

     

     

  • 相关阅读:
    Qt计算器开发(三):执行效果及项目总结
    [HNOI2019]校园旅行
    How to fix nuget Unrecognized license type MIT when pack
    How to fix nuget Unrecognized license type MIT when pack
    git 通过 SublimeMerge 处理冲突
    git 通过 SublimeMerge 处理冲突
    git 上传当前分支
    git 上传当前分支
    gif 格式
    gif 格式
  • 原文地址:https://www.cnblogs.com/jams742003/p/1970003.html
Copyright © 2011-2022 走看看