Attendre qu'un événement se soit produit avant de continuer une fonction
Bonjour,
j'aurais besoin de vos lumières !
J'ai une formulaire avec 2 zones de texte: questionTextBox et answerTextBox
Quand questionTextBox pose une question à l'utilisateur, je voudrais attendre qu'il tape sa réponse dans answerTextBox et selon sa réponse afficher juste ou faux dans questionTextBox et faire ça plusieurs fois.
J'ai fait ce code mais ca bloque tout :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| AutoResetEvent waitHandle = new AutoResetEvent(false);
private void buttonStart_Click(object sender, EventArgs e)
{
Questions();
}
public void Questions()
{
questionTextBox.Text = "en quelle année est né XXX?"
// Wait for event completion
waitHandle.WaitOne();
// check answer
// TBD
questionTextBox.Text = "OK";
}
private void answerTextBox_TextChanged(object sender, EventArgs e)
{
string answ = answerTextBox.Text.ToString();
waitHandle.Set();
} |
Je n'ai pas mis le WaitHandle dans uen fonction mais au global pour être accessible partout. C'est une erreur ?
Pouvez vous ml'indiquer comment je dois m'y prendre (j'aimerais ensuite récupérer la réponse tapée par l'utilisateur, c'est faisable avec un handler ? j'imagine un pointeur, mais c'est rarement utilisé en C#)