Composants Timer thread
Mise à jour : novembre 2007
La classe System.Threading.Timer est utile pour exécuter périodiquement une tâche sur un thread séparé. Par exemple, vous pouvez employer un composant Timer thread pour vérifier l'état et l'intégrité d'une base de données ou pour sauvegarder des fichiers vitaux.
Exemple Timer Thread
L'exemple ci-après lance une tâche toutes les deux secondes et utilise un indicateur pour activer la méthode Dispose qui arrête la minuterie. Cet exemple publie l'état dans la fenêtre de sortie que vous devez rendre visible. Pour ce faire, appuyez sur CTRL+ALT+O avant de tester le code.
Class StateObjClass
' Used to hold parameters for calls to TimerTask
Public SomeValue As Integer
Public TimerReference As System.Threading.Timer
Public TimerCanceled As Boolean
End Class
Sub RunTimer()
Dim StateObj As New StateObjClass
StateObj.TimerCanceled = False
StateObj.SomeValue = 1
Dim TimerDelegate As New Threading.TimerCallback(AddressOf TimerTask)
' Create a timer that calls a procedure every 2 seconds.
' Note: There is no Start method; the timer starts running as soon as
' the instance is created.
Dim TimerItem As New System.Threading.Timer(TimerDelegate, StateObj, _
2000, 2000)
StateObj.TimerReference = TimerItem ' Save a reference for Dispose.
While StateObj.SomeValue < 10 ' Run for ten loops.
System.Threading.Thread.Sleep(1000) ' Wait one second.
End While
StateObj.TimerCanceled = True ' Request Dispose of the timer object.
End Sub
Sub TimerTask(ByVal StateObj As Object)
Dim State As StateObjClass = CType(StateObj, StateObjClass)
' Use the interlocked class to increment the counter variable.
System.Threading.Interlocked.Increment(State.SomeValue)
System.Diagnostics.Debug.WriteLine("Launched new thread " & Now)
If State.TimerCanceled Then ' Dispose Requested.
State.TimerReference.Dispose()
System.Diagnostics.Debug.WriteLine("Done " & Now)
End If
End Sub
Les composants Timer thread sont particulièrement utiles lorsque l'objet System.Windows.Forms.Timer n'est pas disponible, par exemple lorsque vous développez des applications console.
Voir aussi
Concepts
Multithreading avancé avec Visual Basic