Bonjour,
Voici le contexte : j'ai un événement qui est levé par une classe dans une librairie dont je n'ai pas le code, je m'abonne à cet événement dans un projet client (Winform) qui embarque la librairie, ma méthode dans mon projet client est bien levée.
Je souhaite me servir de cette méthode pour mettre à jour un control (ici une listbox), le problème c'est qu'en passant par la méthode BeginInvoke de ma listbox, je mets bien le message en queue, mais l'information ne s'affiche pas au fil de l'eau de la levée d'événement, mais uniquement lorsque le thread instancié par l'objet de la librairie rend la main.
J'utilise ce code dans ma méthode abonnée à l'événement :
La console réagit bien à chaque levée d'événement, mais ma listbox (lbErrors) attend la fin du traitement de la classe de la librairie pour m'afficher tous les éléments.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 private void ClientOnUpdate(object sender, EventParameters UpdateEventArgs) { //Affichage instantané! Console.WriteLine("Update Event Parameters: {0}", UpdateEventArgs); //Affichage différé à la fin du thread du traitement par la librairie lbErrors.BeginInvoke((Action)delegate() { lbErrors.Items.Add(String.Format("Update Event Parameters: {0}", UpdateEventArgs)); }); }
Comment faire pour avoir les messages dans ma listbox dès qu'un événement est levé ?
Merci
Partager