簡體   English   中英

啟用已經啟用的計時器

[英]Enabling an already enabled timer

我有一個程序用作arduino運動檢測器的監視軟件,並且正在通過計時器請求傳感器數據。 我已經做到了,所以必須通過按鈕明確地重置警報。 因此,我的問題是; 我想在更改檢測變量然后將其啟用之前將計時器的啟用設置為false嗎?

tl; dr啟用已啟用的計時器時會發生什么? 是不好還是只是重置?

在System.Windows.Forms.Timer實例上設置Enabled屬性不會重置計時器。 僅當您分配給Enabled的值與當前值不同時,計時器的狀態才會改變,即:當前為False,並將其設置為True或當前為True,並將其設置為False。

在幕后,首先發生的事情是在對象上獲得了排他鎖。 在.Net 2和3.5中,這是通過使用Lock語句來完成的 在.Net 4中,這是使用Monitor類或更具體地說Monitor.Enter()方法完成的。 成功獲取鎖后,將執行檢查以確定新分配的Enabled值是否不同於當前值。

通過反編譯System.Windows.Forms.dll程序集獲得此信息。 我會發布代碼段,但是我不確定這樣做的合法性。

總而言之,可以將定時器設置為Enabled = true(如果已啟用),但是您需要知道,每次執行此請求時,都要求請求對象的獨占。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM