Thread et Windows Form

KerosKeros Messages postés 1 Date d'inscription jeudi 5 juillet 2012 Statut Membre Dernière intervention 5 juillet 2012 - 5 juil. 2012 à 07:57
 Utilisateur anonyme - 5 juil. 2012 à 22:59
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

Utilisateur anonyme
5 juil. 2012 à 22:59
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é.
0
Rejoignez-nous