Plusieurs threads modifiant un seul contrôle

Stex2010 Messages postés 4 Date d'inscription mercredi 30 juin 2010 Statut Membre Dernière intervention 20 août 2010 - 30 juin 2010 à 07:54
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 10 juil. 2010 à 14:46
Bonjour,

J'ai besoin d'exécuter simultanément plusieurs threads qui modifient un contrôle TextBox dans mon application (le journal d'activité de l'application). Etant un noob dans le multi-threading .Net, je me rends sur MSDN puis j'écris le code suivant :

delegate void UpdateJournalCallback(object texte);
private void UpdateJournal_Safe(object texte)
{
if (this.richTextBoxJournal.InvokeRequired)
{
UpdateJournalCallback c = new UpdateJournalCallback(UpdateJournal_Safe);
this.Invoke(c, new object[] { texte });
}
else
{
this.richTextBoxJournal.AppendText(texte + "\n");
Application.DoEvents();
}
}


Puis j'appelle cette méthode aux endroits où je dois mettre ce journal à jour de la façon suivante :

Thread t = new Thread(UpdateJournal_Safe);
t.Start("Statut");
t.Join();


(J'utilise Join() parce qu'il me permet de savoir que la tâche est terminée pour pouvoir passer à la suite).

Ma question est peut-être stupide, mais il n'y a pas plus simple ?

Merci. :)

1 réponse

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
10 juil. 2010 à 14:46
Bonjour,

Plus ou moins :-)

En passant par SynchronizationContext et plus précisément WindowsFormsSynchronizationContext.
Il y a un petit exemple ici : http://blogs.msdn.com/b/mattdotson/archive/2006/02/13/531315.aspx


/*
coq
MVP Visual C#
CoqBlog
*/
0
Rejoignez-nous