System.Threading.Timer 是.NET为指定时间间隔中执行一个方法提供的一种机制。
其中构造函数一个参数提供,提供方法的执行。
应用场景——用控制台模拟一个时钟:
- class Program
-
{
-
-
static void Main(string[] args)
-
{
-
System.Threading.Timer timerClock;
-
timerClock = new System.Threading.Timer(new TimerCallback(timerCall), null, 0, 1000);
-
/*
-
//Timer构造函数参数说明:
-
Callback:一个 TimerCallback 委托,表示要执行的方法。
-
State:一个包含回调方法要使用的信息的对象,或者为空引用(Visual Basic 中为 Nothing)。
-
dueTime:调用 callback 之前延迟的时间量(以毫秒为单位)。指定 Timeout.Infinite 以防止计时器开始计时。指定零 (0) 以立即启动计时器。
-
Period:调用 callback 的时间间隔(以毫秒为单位)。指定 Timeout.Infinite 可以禁用定期终止。
-
*/
-
Console.Read();
-
}
-
private static void timerCall(object obj)
-
{
-
-
Console.WriteLine(DateTime.Now.ToString());
-
-
System.Threading.Thread.Sleep(1000);
-
-
Console.Clear();
-
-
}
-
}
这样一个时钟基本上完成了!值得注意的点System.Threading.Timer构造函数。关于参数代码中已经做了解释。
但是写法上还可以继续改进。C#2.0引入了匿名方法,以后例子可以通过匿名方法改写。
- System.Threading.Timer timerClock;
-
//TimerCallback 委托需要一个 object类型的参数
-
timerClock = new System.Threading.Timer(delegate(object obj)
-
{ Console.WriteLine(DateTime.Now.ToString());
-
System.Threading.Thread.Sleep(1000);
-
Console.Clear();},
-
null, 0, 1000);
在C#3.0中引入拉姆达表达式,因而上面代码还可以继续精简。
- System.Threading.Timer timerClock;
-
//TimerCallback 委托需要一个 object类型的参数
-
timerClock = new System.Threading.Timer((obj)=>
-
{ Console.WriteLine(DateTime.Now.ToString());
-
System.Threading.Thread.Sleep(1000);
-
Console.Clear();},
-
null, 0, 1000);
事实上任何可以应用匿名方法的地方都可以用拉姆达表达是代替!
一个看似简单的程序,如果我们一步步的深入,牵扯到的知识点还不少!
(function(w, d, g, J) { var e = J.stringify || J.encode; d[g] = d[g] || {}; d[g]['showValidImages'] = d[g]['showValidImages'] || function() { w.postMessage(e({'msg': {'g': g, 'm':'s'}}), location.href); } })(window, document, '__huaban', JSON);
阅读(2828) | 评论(0) | 转发(0) |