Comment bien mettre en pause/retard application Windows Forms

Je suis un débutant à la POO et le C#.

Je suis en train de travailler sur un jeu de quiz en utilisant les Formulaires Windows.
Mon problème est lié à deux classes, la forme et la logique de jeu.
J'ai une INTERFACE utilisateur de base, avec les classiques de la Froms contrôles. Prendre un coup d'oeil.

Comment bien mettre en pause/retard application Windows Forms

La chose que je veux réaliser est, quand un joueur appuie sur aucun bouton réponse, il higlight qui a pressé le bouton en rouge ou vert, selon si elle est bonne ou de mauvaise réponse. Après la modification de la couleur que je veux le programme d'attendre un peu, et puis aller à la prochaine question.

Problème est que je ne sais pas comment atteindre cet objectif correctement. Je ne sais pas comment travailler avec les fils et comment exactement la Forme app liées aux threads. Dois-je utiliser un fil de sommeil ou une minuterie ou un async?

Je vais vous montrer la méthode de la logique de jeu de la classe qui doit gérer cela.

public static void Play(char answer) //Method gets a char representing a palyer answer
    {
        if (_rightAnswer == answer) //If the answer is true, the button should become green
        {
            Program.MainWindow.ChangeBtnColor(answer, System.Drawing.Color.LightGreen);
            _score++;
        }
        else //Otherwise the button becomes Red
        {
            Program.MainWindow.ChangeBtnColor(answer, System.Drawing.Color.Red);
        }

        //SLEEP HERE

        if (!(_currentIndex < _maxIndex)) //If it is the last question, show game over
        {
            Program.MainWindow.DisplayGameOver(_score);
        }
        else //If it is not the last question, load next question and dispaly it and finally change the button color to default
        {
            _currentIndex++;
            _currentQuestion = Database.ListOfQuestions.ElementAt(_currentIndex);
            _rightAnswer = _currentQuestion.RightAnswer;
            Program.MainWindow.DisplayStats(_score, _currentIndex + 1, _maxIndex + 1);
            Program.MainWindow.DisplayQuestion(_currentQuestion.Text);
            Program.MainWindow.DisplayChoices(_currentQuestion.Choices);
        }
        Program.MainWindow.ChangeBtnColor(answer, System.Drawing.SystemColors.ControlLight);
    }

Je ne veux pas bloquer complètement l'INTERFACE utilisateur, mais aussi je ne veux pas que les utilisateurs de faire d'autres événements en appuyant sur d'autres boutons pendant la pause. Parce qu'il va entraîner une mauvaise exécution de l'application.

InformationsquelleAutor | 2015-12-12