webForumDet fria alternativet

Pausa Timers.Timer

2 svar · 178 visningar · startad av doggelito

doggelitoMedlem sedan juni 20003 076 inlägg
#1

finns det nått sätt att pausa en timer för att sedan sätta igång den igen, som koden nedan beskriver?

    Private tmr As Timers.Timer

    Protected Overrides Sub OnStart(ByVal args() As String)
        tmr = New Timers.Timer()
        tmr.Interval = 30000
        AddHandler tmr.Elapsed, AddressOf OnTimedEvent
        tmr.Enabled = True
    End Sub

    Public Shared Sub OnTimedEvent(ByVal source As Object, ByVal e As System.Timers.ElapsedEventArgs)
	tmr.Stop
	'gör massa grejjer
	if klar med grejjorna then
	tmr.Start
	end if

    End Sub

    Protected Overrides Sub OnStop()
        tmr.Enabled = False
    End Sub
Marcus EMedlem sedan maj 20021 466 inlägg
#2

Enabled finns. För att inte Timern ska börja om får du minska intervallet med den tid som passerat sen den sist körde OnTimedEvent.

doggelitoMedlem sedan juni 20003 076 inlägg
#3

vet inte om det är rätt eller fel men jag löste det så här:

    Private tmr As Timers.Timer
    Private Shared Running As Boolean = False

    Protected Overrides Sub OnStart(ByVal args() As String)
        tmr = New Timers.Timer()
        tmr.Interval = 30000
        AddHandler tmr.Elapsed, AddressOf OnTimedEvent
        tmr.Enabled = True
    End Sub

    Public Shared Sub OnTimedEvent(ByVal source As Object, ByVal e As System.Timers.ElapsedEventArgs)
        If Running Then Exit Sub
        Running = True
	'gör massa grejjer
        Running = False
    End Sub

    Protected Overrides Sub OnStop()
        tmr.Enabled = False
    End Sub
129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)