Semaphore en VB, ça existe ?

wanbao Messages postés 14 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 6 juillet 2004 - 27 avril 2004 à 11:40
wanbao Messages postés 14 Date d'inscription jeudi 22 avril 2004 Statut Membre Derniè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...

2 réponses

crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
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 !!!

Christophe R.
0
wanbao Messages postés 14 Date d'inscription jeudi 22 avril 2004 Statut Membre Derniè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 :

http://www.vbfrance.com/forum.v2.aspx?ID=232585
0
Rejoignez-nous