Minuteries
Mise à jour : novembre 2007
Les minuteries sont des objets légers qui vous permettent de spécifier qu'un délégué est appelé à un moment donné. Un thread du pool effectue l'opération d'attente.
L'utilisation de la classe Timer est simple. Vous créez, en passant un délégué TimerCallback à la méthode de rappel, un Timer, objet représentant l'état qui est passé au rappel, un temps de déclenchement initial et un temps représentant l'intervalle entre les appels du rappel. Pour annuler une minuterie en attente, appelez la fonction Timer.Dispose.
Remarque : |
---|
Il existe deux autres classes de minuterie. La classe System.Windows.Forms.Timer est un contrôle qui utilise les concepteurs visuels et est conçu pour être utilisé dans des contextes d'interface utilisateur ; il déclenche des événements sur le thread d'interface utilisateur. Comme la classe System.Timers.Timer dérive de Component, elle peut être utilisée avec les concepteurs visuels ; elle déclenche également des événements, mais sur un thread ThreadPool. La classe System.Threading.Timer effectue des rappels sur un thread ThreadPool et n'utilise pas du tout le modèle d'événement. Elle fournit également un objet d'état à la méthode de rappel, à la différence des autres minuteries. Elle est extrêmement légère. |
L'exemple de code suivant démarre une minuterie qui se déclenche après une seconde (1000 millisecondes) et marque chaque seconde jusqu'à ce que vous appuyiez sur la touche ENTRÉE. La variable qui contient la référence à la minuterie est un champ de niveau classe, afin d'empêcher que la minuterie fasse l'objet d'un garbage collection au cours de son exécution. Pour plus d'informations sur un garbage collection agressif, consultez KeepAlive.
Imports System
Imports System.Threading
Public Class Example
Private Shared ticker As Timer
Public Shared Sub TimerMethod(state As Object)
Console.Write(".")
End Sub
Public Shared Sub Main()
ticker = New Timer(AddressOf TimerMethod, Nothing, 1000, 1000)
Console.WriteLine("Press the Enter key to end the program.")
Console.ReadLine()
End Sub
End Class
using System;
using System.Threading;
public class Example
{
private static Timer ticker;
public static void TimerMethod(Object state)
{
Console.Write(".");
}
public static void Main()
{
ticker = new Timer(TimerMethod, null, 1000, 1000);
Console.WriteLine("Press the Enter key to end the program.");
Console.ReadLine();
}
}