我有一個簡單的WinForm應用程序。該應用程序的主要入口點是mainForm。我正在使用窗體上的定時器,定時器間隔設置爲2000毫秒。定時器的Tick事件如下,定時器,可以從一個類中調用並形成
Public myValue as Integer = 100
Private Sub myTimer_Tick(sender As Object, e As EventArgs) Handles myTimer.Tick
If myValue = 0 Then
myTimer.Enabled = False
Else
myValue = myValue -1
End If
End Sub
定時器在加載mainForm時在應用程序的開始被調用。現在myValue是一個全局變量,在這裏爲了簡單起見,我已經使用了它,否則它被一些進程計數機制取代,這不需要在這裏解釋。
我能夠使用這種方法,只要我使用Windows.Forms.Timer放置在一些特定的窗體上。這種方法失敗了,我還有兩種情況。
1 - 我必須在其他窗體上使用相同的功能,爲此目前我在另一個窗體上使用單獨的Timer,並且它有自己的Tick事件。
2 - 我必須從另一個模塊/類使用相同的功能,我無法實現這一點,因爲爲了這個工作,我需要一個窗體。
現在,我已經看到了Threading.Timer。我面臨的問題是,我不知道如何等待Threading.Timer完成,因爲在調用Threading.Timer之後,控件會轉到下一行。我不確定這是否可以在WaitHandle的幫助下完成。另外我讀過Threading.Timer爲它的每個Tick創建一個單獨的Thread。這在我的簡單情況下似乎是一種矯枉過正的行爲。
我只想使用Timer功能而不需要Form。另外,我可以使用帶有Thread.Sleep的Do Loop創建類似的功能,但除非我確定我的Timer功能在其他情況下不起作用,否則我將堅持使用Timer方法。
還有一個'System.Timers.Timer'。考慮到你寫的一些東西,使用一個班級來完成獨立於 – Plutonix