Mise à jour : novembre 2007
Minuterie intégrée dans la file d'attente de Dispatcher qui est traitée à un intervalle de temps et selon une priorité spécifiés.
Espace de noms :
System.Windows.Threading Assembly :
WindowsBase (dans WindowsBase.dll)
XMLNS pour XAML : Non mappé à un xmlns.
Visual Basic (Déclaration)
Public Class DispatcherTimer
Visual Basic (Utilisation)
Dim instance As DispatcherTimer
public class DispatcherTimer
public ref class DispatcherTimer
public class DispatcherTimer
public class DispatcherTimer
<p>Cette classe managée n'est généralement pas utilisée en XAML.</p>
DispatcherTimer est réévalué en haut de chaque boucle Dispatcher.
Les minuteries ne se déclencheront peut-être pas exactement durant l'intervalle de temps défini, mais il est garanti qu'elles ne se déclencheront pas avant. Ceci est dû au fait que les opérations DispatcherTimer sont placées dans la file d'attente Dispatcher tout comme les autres opérations. Le moment d'exécution de l'opération DispatcherTimer dépend des autres travaux de la file d'attente et de leur priorité.
Si System.Timers..::.Timer est utilisé dans une application WPF, il convient de noter que System.Timers..::.Timer s'exécute sur un thread autre que le thread interface utilisateur (UI). Pour accéder aux objets du thread interface utilisateur (UI), il faut publier l'opération sur le Dispatcher du thread interface utilisateur (UI) à l'aide de Invoke ou BeginInvoke. Pour obtenir un exemple d'utilisation de System.Timers..::.Timer, consultez Désactiver une source de commande via une horloge système, exemple. L'utilisation de DispatcherTimer au lieu de System.Timers..::.Timer est justifiée par le fait que DispatcherTimer s'exécute sur le même thread que Dispatcher et que DispatcherPriority peut être défini sur DispatcherTimer.
DispatcherTimer garde un objet actif lorsque les méthodes de l'objet sont liées à la minuterie.
L'exemple suivant crée DispatcherTimer qui met à jour le contenu de Label et appelle la méthode InvalidateRequerySuggested sur CommandManager. Pour obtenir l'exemple complet, consultez Désactiver une source de commande via DispatcherTimer, exemple.
Un objet DispatcherTimer appelé dispatcherTimer est créé. Le gestionnaire d'événements dispatcherTimer_Tick est ajouté à l'événement Tick de dispatcherTimer. La valeur 1 seconde est affectée à Interval à l'aide d'un objet TimeSpan et la minuterie est démarrée.
// DispatcherTimer setup
dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0,0,1);
dispatcherTimer.Start();
Le gestionnaire d'événements Tick met à jour Label qui affiche la seconde actuelle, et il appelle InvalidateRequerySuggested sur CommandManager.
// System.Windows.Threading.DispatcherTimer.Tick handler
//
// Updates the current seconds display and calls
// InvalidateRequerySuggested on the CommandManager to force
// the Command to raise the CanExecuteChanged event.
private void dispatcherTimer_Tick(object sender, EventArgs e)
{
// Updating the Label which displays the current second
lblSeconds.Content = DateTime.Now.Second;
// Forcing the CommandManager to raise the RequerySuggested event
CommandManager.InvalidateRequerySuggested();
}
System..::.Object
System.Windows.Threading..::.DispatcherTimer
Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.
Windows Vista
Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
.NET Framework
Pris en charge dans : 3.5, 3.0
Référence
Autres ressources