c#线程.计时器只滴答一次

本文关键字:一次 滴答 线程 计时器 | 更新日期: 2023-09-27 18:04:16

对计时器非常困惑,它们似乎不能正常工作。

我创建了一个这样的定时器:

this._catTimer = new Timer(state => this.catTimer_Tick(null, new EventArgs()), null, 0, Timeout.Infinite);

它立即滴答一次。在回调的最后,我得到了这个:

this._catTimer.Change(5000, Timeout.Infinite);

但是我的计时器再也不响了。已接通。

我也试过用5000, 0,但它再也不滴答了。什么好主意吗?

c#线程.计时器只滴答一次

您正在给出超时。构造函数(public Timer(TimerCallback callback, Object state, int dueTime, int period))和Change(int dueTime, int period)方法中的period参数是无限的,这意味着您永远不想要周期性信号。

指定的回调方法调用之间的时间间隔定时器被构造时,以毫秒为单位。指定超时。无限禁用周期性信令,MSDN.

尝试在catTimer_Tick方法的逻辑周围放置一个Try/catch。也许你的代码从来没有到达。change line.

已经修复了这个问题,这是由另一个线程阻塞引起的。您可能认为线程计时器不会受此影响,但它确实会。