解决Timer回调方法重复调用的问题_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 解决Timer回调方法重复调用的问题

解决Timer回调方法重复调用的问题

 2013/8/22 15:00:46  阮萤  博客园  我要评论(0)
  • 摘要:如果Timer的回调方法的执行时间很长,计时器可能在上个回调方法还没有完成的时候再次触发,如果我们只是想让一个回调方法执行完后再执行下一个回调方法,可以这样:privatestaticTimers_timer;staticvoidMain(string[]args){s_timer=newTimer(ComputeBoundOp,5,0,Timeout.Infinite);//为period参数指定Timeout.Infinite,这样计时器只触发一次Console.ReadKey();
  • 标签:方法 解决 问题

如果Timer的回调方法的执行时间很长,计时器可能在上个回调方法还没有完成的时候再次触发,如果我们只是想让一个回调方法执行完后再执行下一个回调方法,可以这样:

private static Timer s_timer;

static void Main(string[] args)
{
    s_timer = new Timer(ComputeBoundOp, 5, 0, Timeout.Infinite);//为period参数指定Timeout.Infinite,这样计时器只触发一次

    Console.ReadKey();
}

private static void ComputeBoundOp(Object state)
{
    Console.WriteLine("In ComputeBoundOp:state={0}", state);
    Thread.Sleep(3000);

    s_timer.Change(2000, Timeout.Infinite);//为dueTime指定下次调用回调方法所需要等待的时间
}

 

发表评论
用户名: 匿名