对计时器非常困惑,他们似乎没有正常工作。
我创建了一个这样的计时器:
this._catTimer = new Timer(state => this.catTimer_Tick(null, new EventArgs()), null, 0, Timeout.Infinite);
立刻滴答一次。在回调结束时,我有这个:
this._catTimer.Change(5000, Timeout.Infinite);
但是我的计时器再也没有打过。到达这条线。
我也用5000, 0
尝试了它,但它再也没有打过。有什么想法吗?
答案 0 :(得分:0)
尝试在catTimer_Tick方法中使用try / catch围绕逻辑。也许你的代码永远不会到达。改变行。
答案 1 :(得分:0)
您正在为构造函数(public Timer(TimerCallback callback, Object state, uint dueTime, uint period))和Change( int dueTime, int period)方法中的period参数提供Timeout.Infinite,这意味着您永远不需要周期性信号。
期
指定的回调方法的调用之间的时间间隔 构造Timer时,以毫秒为单位。指定 Timeout.Infinite禁用定期信令,MSDN。
答案 2 :(得分:0)
已修复此问题,这是由另一个阻塞的线程引起的。你不认为线程计时器会受到影响,但确实如此。