Lucyberad
Messages postés414Date d'inscriptionmercredi 16 juin 2004StatutMembreDernière intervention26 juillet 2007
-
22 mars 2006 à 14:27
cs_bidouille007
Messages postés257Date d'inscriptionjeudi 11 septembre 2008StatutMembreDernière intervention22 décembre 2012
-
13 nov. 2009 à 09:39
Bonjour a tous,
j'ai quelque petite question afin d'éclaircir mon savoir (et principalement savoir ce que j'utilise).
donc voila j'ai fais un peu de multhreading y'as pas longtemps et j'ai fais le code suivant:
<hr size="2" width="100%"> Private Sub Lancer_Thread()
Dim Thread1 As New Threading.Thread(AddressOf sub_thread)
Thread1.Start()
End Sub
Private Delegate Sub Evenement(ByVal infos As String, ByVal fini As Boolean)
Private Sub sub_thread()
'Ici on fait un petit peu de code sur une variable et cette variable s'apelle infos
Me.Invoke(New Evenement(AddressOf interpretation_thread), infos, True)
End Sub
Private Sub interpretation_thread(ByVal infos As String, ByVal fini As Boolean)
Console.WriteLine("le thread s'est bien déroulé")
End Sub
<hr size="2" width="100%">donc voila si on resume le code, on lance la fonction lancer_thread, ca crée le thread et ce thread execute la sub_thread.
le thread travaille et a la fin renvoi la varaible qu'il a travaillé (infos) et renvoie true sur la variable fini.
ce code fonctionne ! mais voila y'as plusieurs ligne que je comprend pas:
qu'est-ce qu'un delagate, fait-t-il juste un liaison entre le thread principal et celui crée?
qu'est-ce que la commande invoke, joue-t-elle jsute le rôle "d'activer le delegate"?
pourquoi je ne peut faire de Me.invoke dans un classe (me disant que Me ne connait aps la commande invoke), faut-t-il forcement un lien avec un control?
j'ai compris comment c'etait formé a l'interieur de l'invoke, elle execute le delegate et donne pour adresse interpretation_thread, pourquoi ne fait-t-on pas ce code ci pour passer les paramètres? (le code suivant n'est pas reconnu):
Me.Invoke(New Evenement(AddressOf interpretation_thread(infos, True)))
pourquoi parfois quand j'utilise je mets le code suivant dans interpretation_thread:
Console.WriteLine(infos + " - " + fini)
ca me mets l'erreur suivante: "Input string was not in a correct format." en designant la ligne Me.invoke
quand je mets juste le boolean ca va mais le string il veut pas.
voila, si j'ai d'autres question j'hesiterai pas, (attention ). Merci d'avance.
<hr size="2" width="100%">
L U C Y I3 E R @ D
olixelle
Messages postés506Date d'inscriptionvendredi 30 juillet 2004StatutMembreDernière intervention 3 mars 20082 22 mars 2006 à 18:59
Bonjour,
1. Un delegate est un pointeur sur une fonction. Il permet de faire référence à une fonction. lorsque l'on declare un delegate, on définit simplement la signature des fonctions auxquelles il pourra faire réference. Une fois déclaré, tu peux assigner une fonction au delegate a condition qu'elle respecte la signature de celui ci.
2. Invoke permet d'executer la fonction a laquelle le delegate fait référence.
3. on ne fait pas ca car addressof fais référence à l'adresse de la fonction uniquement. L'intéret étant que tu peux ensuite appeler ton delegate avec les paramètres que tu veux
Lucyberad
Messages postés414Date d'inscriptionmercredi 16 juin 2004StatutMembreDernière intervention26 juillet 20073 22 mars 2006 à 23:54
en fait j'ai compris mon prblm, c'est tout con en fait.
je pensait que quand on mettait un boolean dans une propriété .text ou meme un console.writeline ca le convertissait automatiquement en string.
he non en fait, j'ai dût faire ce code ci-contre:
Console.WriteLine(infos + " - " + fini.ToString)
voila, encore un merci pour les precieuse reponses
<hr size="2" width="100%">
L U C Y I3 E R @ D
Vous n’avez pas trouvé la réponse que vous recherchez ?