2 progs en paralleles [Résolu]

Signaler
Messages postés
348
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
6 novembre 2008
-
Messages postés
172
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
4 août 2005
-
bonjour,

y a t'il un moyen pour faire tourner un programme secondaire en parallele du programme principal.
je mexplique: j'ai un programme qui effectue pas mal d'operations de calculs et qui tourne pendant 15 a 20 secondes. pour faire patienter l'utilisateur, j'aimerais faire tourner en meme temps un deuxieme petit prog avec une animation.

j'ai deja pense a une "progress bar", mais ca ne correspond pas tout a fait etant donne que je ne fais pas de bases de donnees.
j'ai egalement penser a 1 deuxieme exe qui serait lance au debut de la tache et coupe a sa fin mais c'est un peu bancale dans le gestion.

auriez-vous une idee (ou des connaissances) a me soumettre ?

merci a vous,

alonsyl

3 réponses

Messages postés
796
Date d'inscription
jeudi 17 mai 2001
Statut
Membre
Dernière intervention
5 mai 2009
6
Salut ;O)

Ton besoin aborde le multithreading. VB6 est dépourvu en standard de cette fonctionnalité : lancer un process indépendant de celui dans lequel tourne l'application.

1.
Il existe une API permettant de créer un process : CreateThread
Mais VB6 est très instable avec le multithreading et Microsoft déconseil son utilisation.
Voir ici pour un exemple : http://www.mentalis.org/apilist/CreateThread.shtml

2.
Une autre façon de procéder serait de créer un ActiveX EXE
Le composant ActiveX EXE peut traiter des requêtes dans une thread d'exécution indépendante en utilisant des événements ou des rappels asynchrones pour signaler au client qu'une tâche est terminée.

3.
Plus simple à mettre en place mais par forcément très "beau", ceci dit efficace, créer un autre EXE qui serait lancé à partir de l'application principale et les faire discuter par liaison DDE.
Voici ici sur VBFRANCE : http://www.vbfrance.com/gma/source/dde

Il y a certainements d'autres façons de faire, mais ce sont celles qui me viennent à l'esprit là tout de suite...

Guy
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 152 internautes nous ont dit merci ce mois-ci

Messages postés
354
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
24 mars 2011
1
Salut

Il faut que tu synchronise tes 2 progs
Pour cela, tu peux eventuellement utiliser des semaphore

Tu devrait trouver ce qu'il faut ici http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/synchronization_functions.asp

[mailto:D@runia D@runia]
Messages postés
172
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
4 août 2005

Salut,
Tout celà me semble vachement trop compliqué rien que pour afficher une anim pendant un traitement...
Bon, je ne connais pas les détails de ton implémentation, mais je suppose que le long traitement résulte d'une boucle. Moi, à ta place j'introduirais dans la boucle d'abord un DoEvents, pour éviter de bloquer complètement la machine, ensuite une instruction qui s'exécuterait toutes les x boucles et dans laquelle tu places le code qui fait avancer ton animation par exemple.
Pour exécuter une action toutes les x boucles, voilà comment je procède d'habitude :
Dim i as Integer 'compteur que tu incrémentes à chaque boucle.

Dans la boucle :
i=i+1
If i mod x = 0 then 'x étant le nombre de boucles à effectuer avant de rentrer dans le If
'ici l'action à effectuer (afficher l'image suivante de ton anim par ex.)
End If

Voilà, j'espère avoir pu t'aider.
@+