Lucyberad
Messages postés414Date d'inscriptionmercredi 16 juin 2004StatutMembreDernière intervention26 juillet 2007
-
9 juin 2005 à 08:56
Lucyberad
Messages postés414Date d'inscriptionmercredi 16 juin 2004StatutMembreDernière intervention26 juillet 2007
-
12 juin 2005 à 19:13
Bonjour a tous... et a toutes bien sur (si c'est possible ^^)
voici mon probleme:
j'ai fais un petit code qui me permet de faire de la recherche sur
internet et j'ai voulu mettre la partie recherche dans un thread
different que le principal afin que lorsque ce thread recherche sur
internet, celui ne bloque pas le programme principal, jusque la tout
est normal: mais le mieux pour expliquer lr probleme est de prendre du
code:
<hr> Public Sub StartTask()
' Démarre un nouveau thread.
Dim thread1 As New System.Threading.Thread(AddressOf tache_connect_internet)
thread1.Start()
End Sub
Public Sub tache_connect_internet()
site = TextBox1.Text
Dim PgReq As HttpWebRequest 'on déclare les fonctions pour aller sur le net
'apres il y a des truc qui ne concerne pas mon probleme
End Sub
<hr>Vous voyez toujours pas mon
probleme? ben voila mon probleme se situe exactement sur "site =
TextBox1.Text", en effet il s'avere que que j'ai un gros soucis ici car
j'ai a chaque fois un message d'erreur qui me mets en
mi-esquimaujavaniaismicrosoftien mi-anglais que un thread ne peut pas
communiquer avec un autre thread !
ici donc mon thread1 ne veut pas prendre ni envoyer des infos au thread principal !
voici donc ma question (enfin allez vous me dire ^^) : Comment dois-je
modifier mon code afin de faire communiquer les deux thread
correctement?
j'ai rechercher sur la msdn: dans le charabia j'ai pas trouvé d'infos,
et sur ce site j'ai trouvé que pour vb6 (qui passe par une dll) mais
pas par vb.net
ShareVB
Messages postés2676Date d'inscriptionvendredi 28 juin 2002StatutMembreDernière intervention13 janvier 201626 12 juin 2005 à 09:46
salut,
en fait, il faut englober le thread et les données nécessaires dans une
classe, car effectivement, la communication interthread est assez
risquée surtout dans un framework de ce genre...et passer les données
dans le constructeur New...tu peux même appeler une fonction callback à
la fin de ton traitement...
Lucyberad
Messages postés414Date d'inscriptionmercredi 16 juin 2004StatutMembreDernière intervention26 juillet 20073 12 juin 2005 à 19:13
alors 2 chose:
sache que ton lien m'est super utile pour comprendre la transmission
des données malgré qui soit en anglais (bon j'ai triché j'ai trouvé
l'equivalent en fr en modifant un peu le lien )
sinon je tien a remercier chris81 pour son aide (qu'il m'as
envoyé en message privé car il savait aps comment copier-coller ici ^^
mais je lui ai dit il sait maitnenant ^^)
voici sa proposition de code:
<hr size ="2" width="100%">Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim th1 As New Threading.Thread(AddressOf Compter)
Dim th2 As New Threading.Thread(AddressOf Decompter)
Label1.Text = Nothing
th1.Start()
th2.Start()
End Sub
Private Sub Compter()
SyncLock (Label1)
Label1.Text += "Compter"
End SyncLock
End Sub
Private Sub Decompter()
SyncLock (Label1)
Label1.Text += vbCrLf & "Decompter"
End SyncLock
End Sub
<hr size="2" width="100%">
je vais donc m'informer a l'aide du lien et de ce code, donc encore merci !