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 :