我使用一个System.Threading.Timer
对象,并设置它的周期:
// period of 1 second
var timer = new Timer(CallBack, null, 0, 1000);
...
现在我想得到我的计时器的周期,我该怎么办?
没有支持的方式来做到这一点。你有两个选择:
1)最好使用System.Timers.Timer
class,因为它更灵活,在多线程使用的情况下使用更安全。如果您想了解更多关于计时器以及 、 和 之间的比较的信息System.Windows.Forms.Timer
,System.Timers.Timer
请System.Threading.Timer
阅读有关此主题的 MSDN 文章。
2)使用反射访问持有周期值的私有成员。有很多关于如何做到这一点的好文章,您可以使用ILSpy来查看需要阅读的字段。(在.NET 4.0中是timer.m_timer.m_timer.m_period,其他版本可能也一样)
你没有。也就是说System.Threading.Timer
不支持获取期间(或据我所知的任何其他成员)。大致确定周期的唯一方法是自己计时。
根据MSDN,没有办法实现您的要求。
您不能使用System.Threading.Timer
,但如果您使用System.Timers.Timer
or System.Windows.Forms.Timer
,则可以使用,您有Timer.Interval
可以检查的属性。您可以进一步参考此链接以查看这两种实现的差异。