Paramettre d'une fonction Threadée...

capoueidiablo Messages postés 316 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 1 février 2010 - 9 juil. 2004 à 16:34
breizhgatch Messages postés 7 Date d'inscription mercredi 29 octobre 2003 Statut Membre Dernière intervention 26 octobre 2010 - 3 août 2004 à 17:05
Bonjours,
Voila j'utilise l'API CreateThread pour executer differentes taches ascynchronement le petit probleme qui se pose a moi est que l'une des fonctions que je voudrais Threader recois des paramettres. Dans la doc que j'ai pus trouver j'ai cru comprendre que pendant la création du Thread on pouvait spécifier les paramettre de la fonction à Threader.

'API pour créer le Thread
Declare Function CreateThread Lib "kernel32" (lpThreadAttributes As Any, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadID As Long) As Long

'il semblerait que le paramettre "lpParameter" me permette 'd'envoyer des paramettres au Thread que j'ai créer


Ma Question : comment envoyer des paramettres à une fonction qui est executer en Thread ?
--Capoueidiablo--

2 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
9 juil. 2004 à 20:07
Salut capoueidiablo
Je me suis posé la même question ... et je n'y ai pas trouvé de réponse. Si tu as un tuyau, je suis preneur !
Vala
Jack
0
breizhgatch Messages postés 7 Date d'inscription mercredi 29 octobre 2003 Statut Membre Dernière intervention 26 octobre 2010
3 août 2004 à 17:05
lpParameter de la fonction CreateThread est un long (32 bits) qui est passé comme argument à la fonction qui sera exécutée dans le thread.

Exemple: si tu veux passer une classe MyClass en paramètre lors d'un appel à CreateThread

nb: ca peut etre n'importe quel type de paramètre (ex:variant,...)

' *bonne déclaration* de la fonction
Declare Function CreateThread Lib "kernel32" (ByVal lpSecurityAttributes As Long, _
   ByVal dwStackSize As Long, _
   ByVal lpStartAddress As Long, _
   ByVal lpParameter As Long, _
   ByVal dwCreationFlags As Long, _
   lpThreadId As Long) As Long
'...
Dim lThreadProcedureParam as long
Dim objMyClass as MyClass
'...
' pointe sur l'instance de objet
lThreadProcedureParam = ObjPtr(objMyClass) 'voir ObjPtr sur ce meme site
'...
' passage de parametres lors d'une creation de thread
hThread = CreateThread(0&, 0&, AddressOf ThreadProcedure, lThreadProcedureParam, 0&, lThreadID)
0
Rejoignez-nous