Le DispatcherTimer et les traitements périodiques
La classe DispatcherTimer permet de déclencher des traitements périodiques (à délai régulier).
Vous pouvez contrôler la périodicité du timer en fixant la propriété Interval (elle est de type TimeSpan).
Vous devez ajouter votre gestionnaire d'événement à l'événement Tick.
Le timer démarrera lors de l'appel de la méthode Start. Les méthodes Stop et Restart peuvent aussi être appelées.
DispatcherTimer est en quelque sorte l'équivalent du contrôle Timer WinForm. Mais contrairement à
ce dernier, vous ne pouvez pas glisser/déposer un DispatcherTimer sur l'outil de conception d'interface graphique. Il faudra forcément l'utiliser
par code dans la classe de « code-behind ».
Afin de tester cette possibilité, nous allons écrire une application permettant d'afficher une horloge digitale : il sera donc nécessaire d'actualiser l'affichage toutes les secondes. Voici la définition XAML de notre application d'horloge.
1 2 3 4 5 6 7 8 9 |
<Window x:Class="Timer.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Horloge WPF avec un DispatcherTimer" Width="400" Height="200"> <Grid> <Label x:Name="lblTime" Content="" FontSize="30" HorizontalAlignment="Center" VerticalAlignment="Center"/> </Grid> </Window> |
Et voici maintenant le code permettant la mise à jour périodique.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
using System; using System.Windows; using System.Windows.Threading; namespace Timer { public partial class MainWindow : Window { private DispatcherTimer timer = new DispatcherTimer(); public MainWindow() { InitializeComponent(); timer.Interval = TimeSpan.FromSeconds(1); timer.Tick += timer_Tick; timer.Start(); } void timer_Tick(object sender, EventArgs e) { lblTime.Content = DateTime.Now.ToLongTimeString(); } } } |
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :