Ce message pourra faire rire les habitués à WPF, mais son objectif est de faire gagner un temps précieux à ceux qui voudront créer un timer sous WPF.
Si on utilise un timer de la classe Timer pour accéder aux objets de la fenêtre WPF, on reçoit deux exceptions :
1. Le thread appelant n'est pas en mode STA.
2. Le thread appelant n'est pas propriétaire de l'objet.
En effet, WPF permet à un seul et unique thread (celui de la fenêtre principale) d'accéder à ces objets. Il est donc impossible d'utiliser un Timer accédant à ces objets.
Cela est quand même rendu possible par la classe DispatcherTimer :
messageTimer = new DispatcherTimer();
messageTimer.Tick += new EventHandler(messageTimer_Tick);
messageTimer.Interval = new TimeSpan(0, 0, 0, 0, 500);
messageTimer.Start();
void messageTimer_Tick(object sender, EventArgs e)
{
while (messageQueue.Count > 0)
{
TextBlock tb = new TextBlock();
tb.Text = DateTime.Now + " : " + messageQueue.Dequeue();
spMessage.Children.Insert(0, tb);
}
}
Bon code et à bientôt.
Vous devez être identifié pour poster un commentaire.
Copyright © 2000-2012 - www.developpez.com