【转】.NET多线程编程(16)—— 多线程的自动管理(定时器)

     Timer类:设置个定时器定时执行用户指定
  定时器启动后系统将自动建立个新线程执行用户指定
  化个Timer对象:
  Timer timer = Timer(timerDelegate, s,1000, 1000);
  // 第个参数:指定了TimerCallback 委托表示要执行思路方法;
  // 第 2个参数:个包含回调思路方法要使用信息对象或者为空引用;
  // 第 3个参数:延迟时间——计时开始时刻距现在时间单位是毫秒,指定为“0”表示立即启动计时器;
  // 第 4个参数:定时器时间间隔——计时开始以后每隔这么长段时间TimerCallback所代表思路方法将被次单位也是毫秒指定 Timeout.Infinite 可以禁用定期终止
  Timer.Change思路方法:修改定时器设置(这是个参数类型重载思路方法)
  使用举例: timer.Change(1000,2000);
  Timer类举例(来源:MSDN):
using;
using.Threading;
ThreadExample
{
  TimerExampleState
  {
    publiccounter=0;
    publicTimertmr;
  }
  App
  {
    publicvoidMain
    {
      TimerExampleStates=TimerExampleState;
      //创建代理对象TimerCallback该代理将被定时
      TimerCallbacktimerDelegate=TimerCallback(CheckStatus);
      //创建个时间间隔为1s定时器
      Timertimer=Timer(timerDelegate,s,1000,1000);
      s.tmr=timer;
      //主线程停下来等待Timer对象终止
      while(s.tmr!=null)
      Thread.Sleep(0);
      Console.WriteLine("Timerexampledone.");
      Console.ReadLine;
    }
    //下面是被定时思路方法
    voidCheckStatus(Objectstate)
    {
      TimerExampleStates=(TimerExampleState)state;
      s.counter;
      Console.WriteLine("{0}CheckingStatus{1}.",DateTime.Now.TimeOfDay,s.counter);
      (s.counter5)
      {
        //使用Change思路方法改变了时间间隔
        (s.tmr).Change(10000,2000);
        Console.WriteLine("changed……);
      }
      (s.counter10)
      {
        Console.WriteLine("disposingoftimer…");
        s.tmr.Dispose;
        s.tmr=null;
      }
    }
  }
}
  首先创建了个定时器它将在创建1秒的后开始每隔1秒次CheckStatus思路方法当5次以后在CheckStatus思路方法中修改了时间间隔为2秒并且指定在10秒后重新开始当计数达到10次Timer.Dispose思路方法删除了timer对象主线程于是跳出循环终止posted

 

posted on 2010-04-02 16:59  王丹小筑  阅读(205)  评论(0)    收藏  举报

导航