• 线程中Timer类使用(摘自cnblogs)



    下面这段程序演示了Timer类的用法。

    using System;
    using System.Threading;
    class TimerExampleState
    {
        
    public int counter = 0;
        
    public Timer tmr;
    }


    class App
    {
        
    public static void Main()
        
    {
            TimerExampleState s 
    = new TimerExampleState();

            
    //创建代理对象TimerCallback,该代理将被定时调用
            TimerCallback timerDelegate = new TimerCallback(CheckStatus);

            
    //创建一个时间间隔为1s的定时器
            Timer timer = new Timer(timerDelegate, s, 10001000);
            s.tmr 
    = timer;

            
    //主线程停下来等待Timer对象的终止
            while (s.tmr != null)
                Thread.Sleep(
    0);
            Console.WriteLine(
    "Timer example done.");
            Console.ReadLine();
        }

        
        
    //下面是被定时调用的方法
        static void CheckStatus(Object state)
        
    {
            TimerExampleState s 
    = (TimerExampleState)state;
            s.counter
    ++;
            Console.WriteLine(
    "{0} Checking Status {1}.", DateTime.Now.TimeOfDay, s.counter);
            
    if (s.counter == 5)
            
    {
                
    //使用Change方法改变了时间间隔
                (s.tmr).Change(50002000);
                Console.WriteLine(
    "changed");
            }

            
    if(s.counter == 10)
            
    {
                Console.WriteLine(
    "disposing of timer");
                s.tmr.Dispose();
                s.tmr 
    = null;
            }

        }

    }

         程序首先创建了一个定时器,它将在创建1秒之后开始每隔1秒调用一次CheckStatus()方法,当调用5次以后,在CheckStatus()方法中修改了时间间隔为2秒,并且指定在5秒后重新开始。当计数达到10次,调用Timer.Dispose()方法删除了timer对象,主线程于是跳出循环,终止程序。
  • 相关阅读:
    退货给供应商批次库存不足时不能退其他供应商
    sqlserver删除重新安装,需要删除的注册表键值
    pb ole intercontrol 控制document的大小
    获取金额的大写格式
    pb 数字转化为大写金额
    js 轮播 flash
    sql:字符串按照某个字符分割后取第几个字符串
    split函数
    WEB2.0概念概述
    推荐所有的.NET开发人员阅读《J2EE Development without EJB》
  • 原文地址:https://www.cnblogs.com/xiaobaigang/p/930238.html
Copyright © 2020-2023  润新知