thierrydelepine
Messages postés521Date d'inscriptionmardi 24 décembre 2002StatutMembreDernière intervention11 septembre 2008
-
29 avril 2005 à 21:21
thierrydelepine
Messages postés521Date d'inscriptionmardi 24 décembre 2002StatutMembreDernière intervention11 septembre 2008
-
30 avril 2005 à 01:15
Bonjour,
je réitère ma question car c'est important pour moi.
j'ai une fonction qui a une boucle qui tourne jusqu'a un evenement precis qui me fait sortir de la boucle et de la fonction.
cette fonction est appelé dans le load du form.
mais le faite d'apeller cette fonction bloque le reste du code de mon load du form tant que la boucle n'est pas fini.
je cherche donc a executer de facon asynchrone cette fonction afin que mon code continue dans le load du form meme si dans la fonction je suis toujours dans la boucle.
avez vous une idée ou un exemple ou un lien a me fournir.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 29 avril 2005 à 22:14
Utilise pour cela un deuxième thread : l'un pour ton form_load, l'autre
pour ta fonction, ainsi, ta fonction s'éxécutera en même temps que ton
form_load.
DarK Sidious
Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 29 avril 2005 à 22:50
Bonne idée DS mais je me demande jusqu'à quel point un tel fonctionnement est vraiment nécessaire ? Ne pourrait-on pas se contenter d'un Timer par exemple ?
Thierrydelepine < Pourraais-tu nous en dire plus sur le fonctionnement et la finalité de ton programme, on aura peut-être une autre solutions plus simple que le Multi-threading
thierrydelepine
Messages postés521Date d'inscriptionmardi 24 décembre 2002StatutMembreDernière intervention11 septembre 20086 29 avril 2005 à 23:20
Dès le demarrage du programme je lance une fonction qui
utilise deux APIs :
Ret = FindFirstChangeNotification("C:\DossierX", &HFFFFFFFF, FILE_NOTIFY_CHANGE_ALL)
WaitForSingleObject Ret, &HFFFFFFFF
qui me permettent de mettre en attente cette fonction d'un changement quelconque dans un dossier.
seulement mon code du form_load ne continue pas a s'executer tant que la fonction n'a pas fini son Hock via l'API WaitForSingleObject.
j'ai essayé de mettre ma fonction dans un OCX et de mettre un timer qui lorsque je donne le nom du dossier via une propriete créé dans l'OCX lance ma fonction.
la fonction renvoi son resultat (des qu'il y a changement dans le dossier) via un Sub event dans l'OCX, cela fonctionne aussi mais idem mon form_Laod ne continue pas tant que le Hock dans la fonction n'est pas fini.
DARKSIDIOUS : je ne vois pas ce que tu veux dire par thread.
Pourrais tu me donner plus de détail o un lien ou un exemple.
J'espere que vous pourrez m'aider a solutionner mon probleme.
merci d'avance.
thierrydelepine
Messages postés521Date d'inscriptionmardi 24 décembre 2002StatutMembreDernière intervention11 septembre 20086 29 avril 2005 à 23:41
Pour mon test avec l'OCX, je rectifie : le form_Load continue mais mon form se fige des que le timer declenche ma fonction comme si la boucle ou hock de l'API WaitForSingleObject bloquait l'execution complete de mon programme tant que l'evenement de changement du dossier n'a pas eu lieu.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Stephane
Messages postés550Date d'inscriptionvendredi 5 janvier 2001StatutMembreDernière intervention23 septembre 2006 29 avril 2005 à 23:52
Salut
si je comprend bien tu es bloqué, parce que ta WaitForSingleObject ne rend pas la main a ton programme ?
Dans ce cas le multi-thread est obligatoire, toutefois, son utilisation
est tres instable avec VB, il te faut donc une tres grande prudence
quand tu vas l'utiliser.
Le multi threading consiste a avoir de point d'execution, comme si tu lancé 2 exe différent, mais dans un seul.
Mais ca plante tres souvent ! J'ai tester pendant longtemps, sans jamais arriver à quelque chose de stable.
fait une recherche a thread ou multi thread, il y a une source qui marche bien qui affiche une serie de Msgbox
thierrydelepine
Messages postés521Date d'inscriptionmardi 24 décembre 2002StatutMembreDernière intervention11 septembre 20086 30 avril 2005 à 00:36
je viens de faire quelques tests pas tres concluant avec l'exemple des multi MSgbox en multi thread.
dans l'environnement d'execution VB ca marche au debut, mon prog a la main et la fonction se lance.
lors d'un changement dans le dossier la fonction se deroule et lors de sa sortie "erreur d'exeption windows".
Si je pars d'un EXE alors la "erreur d'exeption windows" des le lancement de la fonction meme si celle ci commence par un msgbox...
thierrydelepine
Messages postés521Date d'inscriptionmardi 24 décembre 2002StatutMembreDernière intervention11 septembre 20086 30 avril 2005 à 01:15
Stephane : Le code montrant l'utilisation des multi thread avec des msgbox fonctionne dans l'environnement Vb mais pas lorsqu'il est compilé en EXE, helas !
J'ai trouve aussi un autre code qui traite les threads dans une class et il a le meme probleme des que le programme est compilé en EXE.
Je vous remercie en tout cas pour vos reponses meme si je n'ai pas encore la solution final.
Si de votre coté vous avez un exemple qui, compilé, ne plante pas je suis preneur, ou bien une autre methode pour arriver a mes fins.