2009-11-18 3 views
0

J'ai une application Winforms (.NET 3.X) qui exécute une méthode dans une classe pour traiter certaines données. La méthode déclenche périodiquement un événement StatusUpdate avec un décompte du nombre d'éléments traités. J'ai un ToolStripStatuslabel sur le formulaire que je voudrais mettre à jour avec le nombre. Le problème est que l'étiquette d'état ne se met jamais à jour avec ce nombre tant que le processus n'est pas terminé. Ci-dessous le code du gestionnaire d'événements de mise à jour d'étatComment puis-je forcer la résolution d'un événement à partir d'un autre événement?

toolStripStatusLabel.Text = e.Count.ToString(); statusStrip.Refresh();

Je pense que le problème est que l'événement Refresh ne se déclenche pas car la méthode de traitement est appelée à partir d'un événement de pression de bouton. Je pense qu'il existe un moyen de forcer le processus de rafraîchissement mais je ne me souviens pas de quoi il s'agit.

Ma seule autre solution consiste à exécuter le traitement dans son propre thread.

Répondre

1

trouvé la réponse dans un autre thread:

Application.DoEvents d'appel() après avoir réglé l'étiquette, mais vous devez faire tout le travail dans un thread séparé au lieu, afin que l'utilisateur peut fermer la fenêtre.

C'est la commande à laquelle je pensais ...

0

Avez-vous essayé d'appeler l'actualisation sur l'étiquette elle-même? toolStripStatusLabel.Refresh();

+0

Ne fonctionne pas ... –

Questions connexes