【转】.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
This posting is provided "AS IS" with no warranties, and confers no rights.
浙公网安备 33010602011771号