如何获得System.Threading.Timer期间

时间:2012-11-04 20:15:13

标签: c# timer

我使用了一个System.Threading.Timer对象,并设置了它的周期:

// period of 1 second
var timer = new Timer(CallBack, null, 0, 1000);

...

现在我想得到我的计时器,我该怎么办?

4 个答案:

答案 0 :(得分:3)

没有支持的方法可以做到这一点。您有两种选择:

1)最好使用System.Timers.Timer类,因为它更灵活,在多线程使用时更安全。如果您想了解更多有关计时器的信息,以及System.Windows.Forms.TimerSystem.Timers.TimerSystem.Threading.Timer之间的比较,请阅读MSDN article about this subject.

2)使用反射访问持有期间值的私有成员。有很多关于如何执行此操作的nice articles,您可以使用ILSpy查看您需要阅读的字段。 (它是.NET 4.0中的timer.m_timer.m_timer.m_period,在其他版本中可能也是一样)

答案 1 :(得分:1)

你没有。也就是说System.Threading.Timer不支持获取期限(或据我所知的任何其他成员)。大致确定时间的唯一方法是自己计时。

答案 2 :(得分:0)

根据MSDN,没有办法实现你的要求。

答案 3 :(得分:0)

您无法使用System.Threading.Timer,但是如果您使用System.Timers.TimerSystem.Windows.Forms.Timer,则可以使用Timer.Interval属性进行检查。您可以进一步参考此link以查看这两种实现的不同之处。