knuck18
Messages postés7Date d'inscriptionsamedi 24 mai 2003StatutMembreDernière intervention23 avril 2009
-
17 oct. 2008 à 17:49
knuck18
Messages postés7Date d'inscriptionsamedi 24 mai 2003StatutMembreDernière intervention23 avril 2009
-
20 oct. 2008 à 13:03
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 ;)
A voir également:
Le thread appelant ne peut pas accéder à cet objet parce qu'un autre thread en est propriétaire
cs_niky
Messages postés168Date d'inscriptionjeudi 28 juin 2001StatutMembreDernière intervention18 octobre 20087 18 oct. 2008 à 14:16
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 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.
xmox667
Messages postés357Date d'inscriptionjeudi 8 juin 2006StatutMembreDernière intervention26 décembre 20114 19 oct. 2008 à 08:19
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+
cs_coq
Messages postés6351Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014100 19 oct. 2008 à 16:44
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.