Thread et Windows Form

Signaler
Messages postés
1
Date d'inscription
jeudi 5 juillet 2012
Statut
Membre
Dernière intervention
5 juillet 2012
-
 Utilisateur anonyme -
Bonjour à tous.

J'ai une petite question concernant les threads (je débute dans l'utilisation des threads).
J'ai un programme dont un thread fait une opération en boucle. De temps à autres, j'ai besoin que ce thread envoie des informations à divers TextBox.

Les divers TextBox affichent les données de divers variables
Si je modifie les variables en dehors du thread, les TextBox se mettent à jour.
Si je modifie les variables dans le thread, rien ne se passe.
Si vous avez des idées et/ou suggestion, je suis tous oui.

Voici une partie du code qui pose probléme:

"
Private Sub ThreadTask()

TicketReference = TextBoxTicketRef.Text
If Len(TextBoxTicketRef.Text) = 6 Then
'RechercheIncident(NomPrenomTech, TicketReference)
NomPrenomTech = NomTech & " " & PrenomTech
TAI = TicketReference
Do
If VerifTai(TAI) = True Then
InfoTAI = RechercheTAI(TAI)
If InfoTAI(1) = NomPrenomTech Then
'Me.TextBoxNomUser.Text = InfoTAI(2)
NomUser = InfoTAI(2)
'Me.TextBoxPrenomUser.Text = InfoTAI(3)
PrenomUser = InfoTAI(3)
'Me.TextBoxTai.Text = TAI
FonctionUser = RechercheVIP(NomUser, PrenomUser)
'MessageBox.Show("Fin")
CreateObject("Wscript.shell").PopUp("Nouveau TAI", 1, "Info")
Thread.Sleep(100)
End If
TAI += 1
Else
Thread.Sleep(1500) ' Attend 1,5 secondes
End If
Loop
End If
End Sub

Public Sub TextBoxTicketRef_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBoxTicketRef.TextChanged
TicketReference = TextBoxTicketRef.Text
Threading = New Thread(AddressOf Me.ThreadTask)
Threading.IsBackground = True
Threading.Start()
End Sub

Public Sub TextBoxPrenomUser_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBoxPrenomUser.TextChanged
Me.TextBoxNomUser.Text = InfoTAI(2)
NomUser = InfoTAI(2)
Me.TextBoxPrenomUser.Text = InfoTAI(3)
PrenomUser = InfoTAI(3)
Me.TextBoxTai.Text = TAI
If FonctionUser = "VIP" Then
MsgBox("VIP")
Me.ButtonMailVIP.Visible = True
Me.TextBoxFonctionUser.BackColor = Color.Red
Me.TextBoxFonctionUser.Font = New Font("Microsoft Sans Serif", 7.8, FontStyle.Bold)
'Me.TextBoxFonctionUser.Text = "VIP"
Else
Me.ButtonMailVIP.Visible = False
End If
End Sub
"

Merci d'avance


Cdt,
KerosKeros

1 réponse


Bonsoir,

Utilise la coloration syntaxique (3eme icone depuis la droite) pour coller du code ici. Dans l'état, ça ne donne pas envie de lire ton code.

Deux petites remarques quand même :
[*]
Threading = New Thread(AddressOf Me.ThreadTask) 

Threading est un espace de nom, il faut éviter de nommer ta variable avec ce même nom.
[*] Evite les 'Me.' autant que possible pour se référer à un contrôle du formulaire courant. Celui-ci sait très bien que c'est son contrôle qui est concerné.