Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Modification d'un labelText depuis une thread [ Windows / Formulaire / Winforms / Controls ] (knuck18)

vendredi 17 octobre 2008 à 17:49:19 | Modification d'un labelText depuis une thread

knuck18

Bonjour à tous,

J'ai une interface graphique sur laquelle j'ai un labelText.
J'exécute un Thread qui, après chargements de valeurs, doit modifier mon labelText.

L'erreur est la suivante :
Opération inter-threads non valide : le contrôle 'latestVersion' a fait l'objet d'un accès à partir d'un thread autre que celui sur lequel il a été créé.
Quelle est la meilleure solution d'après vous pour régler ce problème ??

Merci ;)

samedi 18 octobre 2008 à 14:16:48 | Re : Modification d'un labelText depuis une thread

niky

Membre Club
Réponse acceptée !
Salut,

Depuis le framework 2, les opérations inter thread sur les éléments graphiques sont déconseillés et génèrent par défaut une exception en mode debug.
Tu as deux solutions pour mettre à jour ton interface graphique à partir d'un thread :
- Passer par la méthode Invoke présente sur tous les composants graphiques. Le pattern ressemble à ça :

void MonThread()
{
   /* ... */
   UpdateLabel("Hello World");
   /* ... */
}

delegate
void UpdateLabelDelegate(string text);

void UpdateLabel(string value)
{
  if (labelText.InvokeRequired)
    labelText.Invoke(new UpdateLabelDelegate(UpdateLabel),
                              new object[] { value });
  else
    labelText.Text = value;
}

- Sinon, le plus simple est encore de passer par un BackgroundWorker pour la gestion du thread. L'événement ReportProgress du BackgroundWorker étant toujours appelé dans le thread principal de l'application.



samedi 18 octobre 2008 à 18:09:35 | Re : Modification d'un labelText depuis une thread

Bidou

Administrateur CodeS-SourceS
Réponse acceptée !
Bonsoir,
Exemple complet et détaillé ici:
http://www.csharpfr.com/tutorial.aspx?ID=174



-My Blog-

dimanche 19 octobre 2008 à 08:19:54 | Re : Modification d'un labelText depuis une thread

xmox667

Membre Club
Salut,
Çà me rappelle des souvenirs. J'avais une application "multi-threadé" sous vs 2003 après passage sous vs 2005 :
Invalid Cross Thread Operation.
A+





dimanche 19 octobre 2008 à 16:44:10 | Re : Modification d'un labelText depuis une thread

coq

Administrateur CodeS-SourceS
Salut,

Juste un petit éclaircissement sur le message de niky : "Depuis le framework 2, les opérations inter thread sur les éléments graphiques sont déconseillés et génèrent par défaut une exception en mode debug."
Attention, dans les versions précédentes de .NET aussi c'était déconseillé : la différence réside principalement comme niky l'a dit dans l'existance d'assistant de debug qui lancent cette notification.


/*
coq
MVP Visual C#
CoqBlog
*/

lundi 20 octobre 2008 à 13:03:56 | Re : Modification d'un labelText depuis une thread

knuck18

Oki merci à vous !
Problème résolu ;)



Cette discussion est classé dans : thread, modification, labeltext


Répondre à ce message

Sujets en rapport avec ce message

thread [ par bouleetbil ] Je cree un chat avec des sockets donc j'ai un thread qui tourne en fond de tache et qui recupere les messages. A partir de ce thread je peux recevoir multi thread [ par matt2 ] salut j'aurai besoin d'un renseignement!!!!j'ai créé un prog en multi thread. Chacun des deux thread fait appel à une file que j'ai déclaré dans ma cl Changement de langue d'un ColorDialog C# [ par Did69 ] Hello all,Voila mon probleme, lorsqu'on ouvre un ColorDialog, il utilise la langue de windows, en gros si windows est en francais tous les boutons son Changement de langue d'un ColorDialog C# [ par Did69 ] Hello all,Voila mon probleme, lorsqu'on ouvre un ColorDialog, il utilise la langue de windows, en gros si windows est en francais tous les boutons son Ajout d'un contrôle depuis un thread en utilisant Invoke... [ par gazous ] Bonjour,Je vous contacte car j'ai vu que vous étiez assez calé en dll.Mon problème :J'ai un thread qui essaye d'ajouter un contrôle dans un panel char Problème de thread, socket et form [ par Florynth ] Bon pas très compliqué,j'ai créé un thread qui écoute un portaprès je pèse sur un bouton qui fait connectédonc il créé un socket le connect au port en Pb d'affichage de fenetre et thread... [ par bigflo ] Salut,Je developpe un client de tchat en c#.Mais j'ai quelque pb d'affichage des fenetres de tchat. Explication:Bon, j'ai une treeview et lorsque je d thread en C# [ par karshnod ] Bonjour, je me permet de poster car je suis sur un probleme que je ne comprend pas J'ai une WinForm, qui detecte la navigation sur Ie. J'ai un thread Thread + NetworkStream [ par JuS ] Je vais vous exposer mon problème (c'est un peu long à lire et à comprendre...)Je programme un programme client/serveur.Le client, en C#, communique a comment affiché le suivi de modification du Word en html??? [ par hamden79 ] slt, je ne sait comment faire pour activé le suivi de modification dans un fichier word après l'avoir ouvrir.pour l'ouverture et le sauvegarde j'ai pa


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,437 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.