webForumDet fria alternativet
Logga in / Bli medlem

Pausa Timers.Timer

.NET

2 svar · 178 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
256 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)