Lucyberad
Messages postés414Date d'inscriptionmercredi 16 juin 2004StatutMembreDernière intervention26 juillet 2007
-
14 mars 2006 à 14:54
troxsa
Messages postés553Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention 2 octobre 2016
-
14 mars 2006 à 23:28
Bonjour a tous.
j'ai un petit prblm avec une appli que je veut faire fonctionner en multithreading.
j'ai fais ce petit code (que j'ai reduit au strict necessaire pour la comprehension):
Public Class MaClass
Public Event Evenement(ByVal info As Boolean)
Public Sub Mafonction()
RaiseEvent Evenement(False)
End Sub
End Class
Private Sub Commencer
Dim ThreadAllocine As New Threading.Thread(AddressOf Module_Allocine.recherche_film)
ThreadAllocine.Start()
End Sub
Private Sub mafonction2(ByVal info As Boolean) Handles MaClass.Evenement
MsgBox(info)
label1.text = info
End Sub
Voila, j'explique un peu mon envie: j'ai une classe qui realise MaFonction, celle est est bien lancé sur un thread different.
Les deux Sub c(ommencer, et mafonction2) sont eux declaré sur le thread principal.
Normalement le thread crée doit lancer un evenement avec une information (le boolean) et cette evenement doit lancer mafonction2 grace au Handles. Ca fonctionne, mafonction2 se lance et affiche la msgbox, je me disait c bon c gagné ! et non, quand il veut changer le .text du label1 (controle se trouvant dans le thread principal) le debugger me dit que je peut pas changer les infos d'un autre thread.
je pense donc que mafonction2 etant ecrite sur la class principale (le thread principal) est quand meme traité par le thread secondaire.
voila je demande votre aide afin de savoir comment je peut faire pour arranger ce prblm. d'avance, merci !
<hr size="2" width="100%">
L U C Y I3 E R @ D
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 14 mars 2006 à 15:01
Bonjour
Les threads ont leurs pile (des appels des fonction) perso, donc une classe n'est pas liée à 1 thread.
Quand ton thread appel une fonction, la fonction est lancée dans le thread appelant.
J'ai déjà vu que l'on peut mettre les sub dans une file d'attente (pour leur traitement par le thread principal), mais je ne pourrais pas t'en dire plus.
Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
troxsa
Messages postés553Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention 2 octobre 20161 14 mars 2006 à 18:32
http://glarde.developpez.com/dotnet/bgworker/ et sur le site de microsoft il y a une Webcasts sur le BackgroundWorker
de monsieur Eric Vernié :) mais je sais plus ou il faut le rechercher !
Lucyberad
Messages postés414Date d'inscriptionmercredi 16 juin 2004StatutMembreDernière intervention26 juillet 20073 14 mars 2006 à 20:27
oula mon crane a besoin d'un aspegic, mais bon c vraiment tres complet et intuitif !
de plus, il y as les 3 soltions multithredqu'on parlait.
moi => thread
Nhenry => les delegates (pools de thread sur le thread principal dont je parlait)
TroXsa => le BG worker
y'as plus qu'a choisir celui qu'on prefere et qui est le plus simple