Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : execution asynchrone d une fonction [ Archives Visual Basic / Exécution ] (thierrydelepine)

vendredi 29 avril 2005 à 21:21:16 | execution asynchrone d une fonction

thierrydelepine

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.


NB : je connais DoEvents

vendredi 29 avril 2005 à 22:14:38 | Re : execution asynchrone d une fonction

DARKSIDIOUS

Membre Club Administrateur CodeS-SourceS
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/

vendredi 29 avril 2005 à 22:50:35 | Re : execution asynchrone d une fonction

crenaud76

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

 Christophe R

vendredi 29 avril 2005 à 23:20:37 | Re : execution asynchrone d une fonction

thierrydelepine

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.


vendredi 29 avril 2005 à 23:41:51 | Re : execution asynchrone d une fonction

thierrydelepine

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.

vendredi 29 avril 2005 à 23:52:44 | Re : execution asynchrone d une fonction

Stephane

Membre Club
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

voila

A+


Utilisateurs du forum : Merci de lire http://www.vbfrance.com/forum.v2.aspx?ID=445871


samedi 30 avril 2005 à 00:36:26 | Re : execution asynchrone d une fonction

thierrydelepine

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...

   

samedi 30 avril 2005 à 01:15:15 | Re : execution asynchrone d une fonction

thierrydelepine

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.



Cette discussion est classé dans : fonction, boucle, form, load, asynchrone


Répondre à ce message

Sujets en rapport avec ce message

executer une fonction de maniere asynchrone [ par thierrydelepine ] Bonjour,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 boucle avec form_load [ par noisy ] En voulant vérifier si l'enregistrement dans mon form n'était pas vide, j'ai tapé le code suivant:"Private Sub Form_Load()If Adodc1.Recordset.E O F = Wait après appel d'une Fonction [ par Cpapy ] Bonjour Dans une FORM j'appelle une fonction qui se trouve dans un MODULE.Comment faire pour interrompre le traitement de la FORM tant que le Traiteme load et unload en VB6 [ par SLAINE ] Bonjour,je cherche a enregistrer une form contenant des cases à cocher de sorte que lorsque j'exécute l'exe je retrouve les cases cochées à la fermetu Attendre un form.hide avant de continuer un sub [ par xalimero ] Bonjour tout le monde,J'ai un petit problème lors de l'exécution d'une fonction j'ouvre une feuille pour l'utilisateur...Je voudrais que la fonction r Prob avec les variables [ par Toto3310 ] J'ais un prob en vb au début de mon programme je déclare cette variableform loadnom = inputbox "votre nom svp"il n'y pas que ça dans form load mais co fonctions load et show [ par clonevince ] voilà, dans l'appli que j'eesaye de faire, il y a deux form.dans une, la pricipale, il y a un menu, et quand je clique sur un item, je voudrais que ça Unloader une form dans son êvenement Form_Load [ par jockos ] Je fais un traitement dans l'êvenement Load de ma Form.Et je voudrais pouvoir la fermer (UNLOAD) à partid de l'evenement LOAD...Je me demande si c'est Sortir d'une fonction a partir d'une autre [ par pioug43 ] J'aimerais pouvoir sortir d'une boucle infini en envoyant soit un mess d'erreur soit toute autre solution qui me permettrai de quitter la boucle a par


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,203 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.