Bonjour à tous et à toutes,
J'ai créé un clavier virtuelles 10 touches à l'aide de bouton et un mini écran (RichTextBox) pour afficher du texte. J'aimerais faire une méthode bloquante permettant de demander à l'utilisateur de taper quelques choses sur le clavier puis valider. A la validation le programme me donne ce que j'ai tapé. L'autre difficulté est que cette méthode peut être appelé par plusieurs autres threads, elle doit biensur être bloqué pendant qu'un thread l'utilise. Pour ça j'ai pensé à des mutex.
la méthode que j'aimerais avoir est :
Je vois parfaitement ce qui cloche mais je n'arrive pas à empêcher le thread principal de se bloqué. J'ai essayer le WaitCallBack mais si j'attend la fin du traitement avec AutoResetEvent ça bloque.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Mutex m = new Mutex(); Object synchroButton = new Object(); Int number; public int AskNumber(){ m.WaitOne(); //nombre à retourner number = 0; //initialise le bouton validation _buttonOKPushed = false; //on bloque tant que le bouton ok n'est pas validé while (!_buttonOKPushed) Monitor.Wait(synchroButton); m.Release(); return number; } ///en background j'ai tous les event sur boutons qui s'occupe de modifier la valeur de number
J'avoue que je n'ai pas essayer de le lancer dans un thread à part mais je ne vois pas pourquoi ça fonctionnerait.
Si vous pouvez me conseiller ça m'aiderait beaucoup.
Cordialement,
Folkene
Partager