System.Threading.Timer

System.Threading.Timer 是.NET为指定时间间隔中执行一个方法提供的一种机制。

 

其中System.Threading.TimerCallback构造函数一个参数提供,提供方法的执行。

应用场景——用控制台模拟一个时钟:

 

  1. class Program
  2.     {
  3.        
  4.         static void Main(string[] args)
  5.         {
  6.             System.Threading.Timer timerClock;
  7.             timerClock = new System.Threading.Timer(new TimerCallback(timerCall), null, 0, 1000);
  8.             /*
  9.             //Timer构造函数参数说明:
  10.             Callback:一个 TimerCallback 委托,表示要执行的方法。
  11.             State:一个包含回调方法要使用的信息的对象,或者为空引用(Visual Basic 中为 Nothing)。
  12.             dueTime:调用 callback 之前延迟的时间量(以毫秒为单位)。指定 Timeout.Infinite 以防止计时器开始计时。指定零 (0) 以立即启动计时器。
  13.             Period:调用 callback 的时间间隔(以毫秒为单位)。指定 Timeout.Infinite 可以禁用定期终止。
  14.             */
  15.             Console.Read();
  16.         }
  17.         private static void timerCall(object obj)
  18.         {
  19.             
  20.             Console.WriteLine(DateTime.Now.ToString());
  21.             System.Threading.Thread.Sleep(1000);
  22.             Console.Clear();
  23.         }
  24.     }

 

 

 

这样一个时钟基本上完成了!值得注意的点System.Threading.Timer构造函数。关于参数代码中已经做了解释。

 

但是写法上还可以继续改进。C#2.0引入了匿名方法,以后例子可以通过匿名方法改写。

 

  1. System.Threading.Timer timerClock;
  2.             //TimerCallback 委托需要一个 object类型的参数
  3.             timerClock = new System.Threading.Timer(delegate(object obj)
  4.                 { Console.WriteLine(DateTime.Now.ToString());
  5.                     System.Threading.Thread.Sleep(1000);
  6.                     Console.Clear();},
  7.                     null, 0, 1000);

 

 

 

在C#3.0中引入拉姆达表达式,因而上面代码还可以继续精简。

 

  1. System.Threading.Timer timerClock;
  2.             //TimerCallback 委托需要一个 object类型的参数
  3.             timerClock = new System.Threading.Timer((obj)=>
  4.                 { Console.WriteLine(DateTime.Now.ToString());
  5.                     System.Threading.Thread.Sleep(1000);
  6.                     Console.Clear();},
  7.                     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);
 

转载于:https://www.cnblogs.com/wangzhe/archive/2013/03/23/2977731.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值