begin process at 2010 02 10 09:35:00
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Windows

 > 

Formulaire / Winforms / Controls

 > 

Multithread: probleme de cross-threading avec un contrôle


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Multithread: probleme de cross-threading avec un contrôle

lundi 9 mars 2009 à 14:14:49 | Multithread: probleme de cross-threading avec un contrôle

neo2k2

Bonjour à tous,

Je débute avec les thread et je me trouve confronté à un petit problème que je n'arrive pas à résoudre.
Dans une Form, j'ai une procédure d'ouverture de fichier (pas du tout optimisée):

PrivateSub OpenFile()

Dim i AsInteger = 1

Dim monStreamReader AsNew StreamReader(Me.txtFileA.Text()) 'Stream pour la lecture

Dim ligne AsString' Variable contenant le texte de la ligne

DoWhileTrue

ligne = monStreamReader.ReadLine()

Me.TextBox1.Text = Me.TextBox1.Text & ligne

' FormMain.TextBox1.Refresh()

Loop' Until ligne Is Nothing

monStreamReader.Close()

EndSub

Et j'ai un thread qui théoriquement lance cette procédure pour ouvrir des fichiers de plusieurs Mb:

PrivateSub btnOpenFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpenFile.Click

Using OpenDial AsNew OpenFileDialog

If (OpenDial.ShowDialog = Windows.Forms.DialogResult.OK) Then

OpenDial.Filter =

"Text files (*.txt)|*.txt|All files (*.*)|*.*"

txtFileA.Text = OpenDial.FileName

Try

' cree un nouveau thread pour economiser le processus

Dim t As Thread

t =

New Thread(New ThreadStart(AddressOf OpenFile))

t.Start()

Catch ex As Exception

MsgBox(

"Une erreur est survenue au cours de l'acces en lecture du fichier." & vbCrLf & vbCrLf & "Veuillez verifier l'emplacement : " & fichier, MsgBoxStyle.Critical, "Errueur lors de l'ouverture du fichier...")

EndTry

EndIf

EndUsing

EndSub

A priori rien de bien sorcier mais voila le message d'erreur que j'obtiens:

"Cross-thread operation not valid: Control 'TextBox1' accessed from a thread other than the thread it was created on."

Si l'un de vous a le courage de m'expliquer... Merci d'avance.
lundi 9 mars 2009 à 14:29:57 | Re : Multithread: probleme de cross-threading avec un contrôle

lesdis

Bonjour,

Le controle Textbox1 appartient au thread principal de ta form, tandis que ton ouverture de fichier se fait sur un thread séparé. Pour accéder au thread principal, il va falloir passer par les délégués.

Petit exemple :

Private sub delegate _Affiche(Texte as string)

Private sub Affiche(Texte as string)
Textbox1.text = textbox1.text & Texte
End sub

Private sub OpenFile()
'Ton traitement

me.invoke(new _Affiche(AdressOf Affiche),Texte) 'Création d'un nouveau délégué pointant vers Affiche et appel de celui par la form

End sub

Tout est fait de tete, il peut y avoir des erreurs.

Je te conseille de te renseigner sur les délégués pour bien comprendre le fonctionnement

Bonne Prog
lundi 9 mars 2009 à 16:20:47 | Re : Multithread: probleme de cross-threading avec un contrôle

Willi

Membre Club Administrateur CodeS-SourceS

Tu peux désactiver le contrôle des appels de thread avec la propriété CheckForIllegalCrossThreadCalls.
Me.CheckForIllegalCrossThreadCalls = False

Ceci est une autre méthode bonne à savoir mais évite de l'utiliser.

mardi 10 mars 2009 à 08:41:43 | Re : Multithread: probleme de cross-threading avec un contrôle

neo2k2

Je vais tester les 2 solutions, de toute façon il faut que je comprenne les threads (bien que j'aie déjà lu la faq msdn sur le sujet).

Merci, je vous redis.


Cette discussion est classée dans : fichier, text, thread, textbox1, cross


Répondre à ce message

Sujets en rapport avec ce message

VB.NET : disponibilité Readonly d'un fichier [ par Sympa74 ] Bonjour à tous, Bien évidemment, j'ai déjà cherché sur le forum, mais je n'ai pas vraiment trouvé ce que je cherche, donc voici mon problème. J'ai un Module.Import (TextBox1.Text) [ par CwamM ] Salut, Lors de la création dela fenetre me permettant d'aller explorer et chercher mon fichier a exploiter, mon code plante au niveau de l'import de c Module.Import (TextBox1.Text) [ par CwamM ] Salut, Lors de la création dela fenetre me permettant d'aller explorer et chercher mon fichier a exploiter, mon code plante au niveau de l'import de c Module.Import (TextBox1.Text) [ par CwamM ] Salut, Lors de la création de la fenetre qui me permet d'aller chercher mon fichier a exploiter, il n'arrive pas a l'importer, sauriez vous m'aider? L Caption d'un bouton dans un fichier text [ par Leo_Robotic_Passion ] Bonsoir a tous, j'ai enregistré le caption d'un bouton dans un fichier texte.      Cbt_1 = TextLine      Line Input #1, TextLineCa c'est ok.Mais pour  VB6 Écrire dans un fichier qui vient d'être créé [ par JeffC1977 ] Salut à tous...J'ai un problème... avec l'écriture dans un fichier....Je cré un fichier mais je suis incapable d'écrire dans ce fichier... Le texte qu Changer 1 info dans un fichier XML [ par Phil72000 ] Bonjour,Quelqu'un pourrait-il me dire comment modifier 1 seule donnée dans un fichier XML.En fait, j'ai un fichier XML (utf-8), créé par un code de ty Problème récupération de données dans un fichier .txt + problème impression par la même occasoin [ par DJMAX360 ] Voici mon gros problème...Je suis débutant sous VB,et sur ce forum,  et voici mes 2 problèmes: 1er-) j'enregistre le contenu de textbox et les récupèr fichier texte et listbox [ par neg03 ] Bonjour,je possède un fichier .txt dans lequel j'enregistre des données correspondants à un objet.Je les enregistre de cette manière et les ajoute aus Text box, ajout de propriétés [ par nours87 ] Bonjour a tous,Désolé si je ne suis pas au bon endroit, je ne sais pas si ma question rentre bien dans ce thème.Voila j'utilise des textbox pour lire


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,608 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales