Pausa Timers.Timer

.NET

2 svar · 194 visningar · startad av doggelito

Medlem sedan juni 20003 076 inlägg
Trådstart#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
Medlem 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.

Medlem 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
246 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)