3

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

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

...

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

4

4 回答 4

4

没有支持的方式来做到这一点。你有两个选择:

1)最好使用System.Timers.Timerclass,因为它更灵活,在多线程使用的情况下使用更安全。如果您想了解更多关于计时器以及 、 和 之间的比较的信息System.Windows.Forms.TimerSystem.Timers.TimerSystem.Threading.Timer阅读有关此主题的 MSDN 文章。

2)使用反射访问持有周期值的私有成员。有很多关于如何做到这一点的好文章,您可以使用ILSpy来查看需要阅读的字段。(在.NET 4.0中是timer.m_timer.m_timer.m_period,其他版本可能也一样)

于 2012-11-04T20:26:03.303 回答
2

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

于 2012-11-04T20:17:33.810 回答
1

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

于 2012-11-04T20:18:57.600 回答
1

您不能使用System.Threading.Timer,但如果您使用System.Timers.Timeror System.Windows.Forms.Timer,则可以使用,您有Timer.Interval可以检查的属性。您可以进一步参考此链接以查看这两种实现的差异。

于 2012-11-04T20:25:45.210 回答