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.
Public Class DispatcherTimer
Dim instance As DispatcherTimer
public class DispatcherTimer
public ref 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(); }
Windows Vista