C#多线程编程之:Timer(定时器)使用示例

Timer类:设置一个定时器,定时执行用户指定的函数。定时器启动后,系统将自动建立一个新的线程,执行用户指定的函数。

构造函数:Timer(TimerCallback callback, object state, int dueTime, int period)
参数说明
  callback:一个 System.Threading.TimerCallback 委托,表示要执行的方法。
  state:一个包含回调方法要使用的信息的对象,或者为 null。
  dueTime:调用 callback 之前延迟的时间量(以毫秒为单位)。指定 System.Threading.Timeout.Infinite 可防止启动计时器。指定零(0) 可立即启动计时器。
  period:调用 callback 的时间间隔(以毫秒为单位)。指定 System.Threading.Timeout.Infinite 可以禁用定期终止。

Timer.Change()方法:修改定时器的设置。(这是一个参数类型重载的方法)

示例代码:

 

 
  
using System;
using System.Threading;

namespace ThreadExample
{
// Timer信息对象 7
class TimerObject
{
public int Counter = 0 ;
}

class App
{
public static void Main()
{
TimerObject s
= new TimerObject();
// 创建委托对象TimerCallback,该委托将被定时调用
TimerCallback timerDelegate = new TimerCallback(CheckStatus);
// 创建一个时间延时2s启动,间隔为1s的定时器
Timer timer = new Timer(timerDelegate, s, 2000 , 1000 );

// 检查计数器值
while (s.Counter < 10 )
{
Thread.Sleep(
1 );
}

// 更改timer执行周期,延时1s开始
timer.Change( 1000 , 500 );
Console.WriteLine(
" Timer被加快了! " );

// 检查计数器值
while (s.Counter < 20 )
{
Thread.Sleep(
1 );
}

// 释放Timer
timer.Dispose();
Console.WriteLine(
" Timer示例运行结束! " );
Console.ReadLine();
}

// 下面是被定时调用的方法
static void CheckStatus(Object state)
{
TimerObject s
= (TimerObject)state;
s.Counter
++ ;
Console.WriteLine(
" 当前时间:{0} 计数器值:{1} " , DateTime.Now.ToString(), s.Counter);
}
}
}

  程序首先创建一个定时器,延时2秒启动,每隔1秒调用一次CheckStatus()方法。当调用9次以后,修改时间间隔为500毫秒,且指定在1秒后重新开始。当计数达到19次,调用Dispose()方法删除了timer对象,终止程序。

转载于:https://www.cnblogs.com/free722/archive/2011/03/25/1995145.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值