wanbao
Messages postés14Date d'inscriptionjeudi 22 avril 2004StatutMembreDernière intervention 6 juillet 2004
-
27 avril 2004 à 11:40
wanbao
Messages postés14Date d'inscriptionjeudi 22 avril 2004StatutMembreDernière intervention 6 juillet 2004
-
9 juin 2004 à 17:30
Salut,
Voila, j'ai un soucis, je souhaiterais utiliser des sémaphores dans un programme VB.
Le problème est le suivant : j'ai une fenêtre MDI qui permet l'affichage de fenêtres filles. Chaque fenêtre ne doit s'afficher que si aucune des autres n'est ouverte.
J'aimerais pouvoir utiliser les sémaphores pour gérer leur affichage.
Une solution intermédiaire serait d'employer une ou plusieurs variables globales (par exemple un boolean pour chaque fenêtre), mais ces méthodes ne sont pas très évolutives.
Pour l'instant le programme ne doit gérer que deux fenêtres, mais ce nombre pourrait bien croitre. D'où l'idée des sémaphores ou d'une méthode similaire (qui m'est jusque là inconnue) permettant une gestion efficace du multi-tâche pour réaliser un développement propre et maintenable.
Si quelqu'un pouvait m'aider, ce serait fantastique...
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 27 avril 2004 à 15:16
Le plus simple est d'avoir une variable public booleenne,et une seule suffit pour gérer de 2 à 15 000 000 de fenetre fille, je te jure !!
Dans l'EVT Load de toutes tes fenetres, tu mets la variable à True et tu la met à False dans l'Evt Unload de toutes tes fenetres
Au moment d'ouvrir une fenetre, tu testes cette variable, si elle est False, tu ouvres la fenetre (Frm.Show) sinon tu ne fait rien !!!
wanbao
Messages postés14Date d'inscriptionjeudi 22 avril 2004StatutMembreDernière intervention 6 juillet 2004 9 juin 2004 à 17:30
Merci beaucoup crenaud76, en fait, c'est ce que j'ai fini par faire, je mets à jour une variable globale (Boolean) et à l'aide d'un DoEvents (qui bloque l'éxecution), je n'ouvre la fernetre suivante que lorsque la première est fermée (c'est à dire que le Boolean qui la caractérise est à False).
Pour ceux qui sont interessés, le code (très court) se trouve ici :