我使用System.Threading.Timer
對象,我設置其週期:如何獲得System.Threading.Timer期
// period of 1 second
var timer = new Timer(CallBack, null, 0, 1000);
...
現在,我想我的定時器的時段,我該怎麼辦?
我使用System.Threading.Timer
對象,我設置其週期:如何獲得System.Threading.Timer期
// period of 1 second
var timer = new Timer(CallBack, null, 0, 1000);
...
現在,我想我的定時器的時段,我該怎麼辦?
有沒有支持的方式來做到這一點。您有兩種選擇:
1)最好使用System.Timers.Timer
類,因爲它更靈活,並且在使用多線程的情況下更安全。如果您想了解更多關於定時器和System.Windows.Forms.Timer
,System.Timers.Timer
和System.Threading.Timer
之間的比較,請閱讀MSDN article about this subject.
2)使用反射來訪問私有成員持有的週期值。關於如何做到這一點,有大量nice articles,您可以使用ILSpy來查看您需要閱讀哪個字段。 (它是.NET 4.0中的timer.m_timer.m_timer.m_period,在其他版本中也可能相同)
你不知道。也就是說System.Threading.Timer
不支持獲取期限(或者據我所知,任何其他成員)。大致確定時間段的唯一方法是自己計時。
您不能使用System.Threading.Timer
,但如果您使用System.Timers.Timer
或System.Windows.Forms.Timer
,那麼您可以檢查屬性Timer.Interval
。您可以進一步參考此link以查看這兩個實現的差異。
如果你解釋爲什麼你想這樣做,也許社區可以建議替代解決方案 – Patrick