C#多线程 定时重复调用异步线程即System.Threading.Timer类使用小例

1.System.Threading.Timer计时器提供了一种重复调用异步线程的方法。.Net BCL中有多个Timer类,如用于Windows应用程序的System.Windows.Forms.Timer类,如可以运行在用户接口线程或工作线程上的System.Timers.Timer类。它们是很不一样的,这里要讲的System.Threading.Timer类是一种定时调用某个异步线程的类。每次计时器到设定的时间,系统就去线程池中开启一个线程运行提供的回调方法。

2.调用这个Timer类的重复运行异步线程的方法很简单: 

Timer myTimer = new Timer(TimerCallback callback, object state, uint dueTime, uint period);

上述方法中的参数,dueTime是首次调用异步线程前的等待时间,为整毫秒数,如2000,表示2秒后第一次调用;

period是两次调用之间的时间间隔,为整毫秒数,如1000,表示每隔1秒调用一次(即发起一个异步线程,新发起的异步线程不会影响之前发起的线程,所有发起的线程都持续执行,如在下面例子中,直到用户关闭程序所有线程才结束运行。);

state可以是null或者每次调用异步线程时要传入的对象的引用;

callback是一个传入一个object类型的参数,返回值是void的委托类型的方法,由用户自定义,下面有例子。

3.程序运行结果(控制台程序)


4.代码

using System;
using System.Threading;

namespace 用Timer定时重复运行异步线程
{
 class Program
 {
  int TimesCalled = 0;

  void Display(object state)
  {
   Console.WriteLine("{0} {1} keep running.",(string)state, ++TimesCalled);           
  }

  static void Main()
  {
   Program p = new Program();
   Timer myTimer = new Timer(p.Display,"Processing timer event", 2000, 1000);//2秒后第一次调用,每1秒调用一次
   //Timer myTimer1 = new Timer(p.Display, "Processing timer event", Timeout.Infinite, 1000);//永远不会被调用
   //Timer myTimer2 = new Timer(p.Display, "Processing timer event", 2000, Timeout.Infinite);//2秒后第一次调用,之后再不调用
   Console.WriteLine("Timer started.");
   Console.ReadLine();
  }
 }
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值