Utiliser Visual C# pour créer un thread

Vous pouvez écrire des applications multithread dans Microsoft Visual C# .NET ou dans Visual C#. Cet article décrit comment une application Visual C# simple peut créer et gérer des threads.

Version d’origine du produit : Visual C#
Numéro de la base de connaissances d’origine : 815804

Configuration requise

La liste suivante décrit le matériel, les logiciels, l’infrastructure réseau et les Service Packs recommandés dont vous avez besoin :

  • Windows ou Windows Server
  • Visual C# .NET ou Visual C#

Cet article suppose que vous êtes familiarisé avec les rubriques suivantes :

  • Programmation Visual C#
  • Environnement de développement intégré (IDE) Visual Studio .NET ou IDE Visual Studio

Cet article fait référence à l’espace de noms System.Threadingde la bibliothèque de classes .NET Framework .

Créer une application Visual C# avec des threads

  1. Démarrez Visual Studio .NET, Visual Studio ou Visual C# Express Edition.

  2. Créez un projet d’application Windows Visual C# nommé ThreadWinApp.

  3. Ajoutez un contrôle Bouton au formulaire. Par défaut, le bouton est nommé Button1.

  4. Ajoutez un composant ProgressBar au formulaire. Par défaut, la barre de progression est nommée ProgressBar1.

  5. Cliquez avec le bouton droit sur le formulaire, puis cliquez sur Afficher le code.

  6. Ajoutez l’instruction suivante au début du fichier :

    using System.Threading;
    
  7. Ajoutez le gestionnaire d’événements suivant button1_Click pour Button1 :

    private void button1_Click(object sender, System.EventArgs e)
    {
        MessageBox.Show("This is the main thread");
    }
    
  8. Ajoutez la variable suivante à la Form1 classe :

    private Thread trd;
    
  9. Ajoutez la méthode suivante à la classe Form1 :

    private void ThreadTask ()
    {
        int stp;
        int newval;
        Random rnd = new Random ();
    
        while (true)
        {
            stp = this.progressBar1.Step * rnd.Next (-1, 2);
            newval = this.progressBar1.Value + stp;
            if (newval > this.progressBar1.Maximum)
                newval = this.progressBar1.Maximum;
            else if (newval < this.progressBar1.Minimum)
                newval = this.progressBar1.Minimum;
            this.progressBar1.Value = newval;
            Thread.Sleep (100);
        }
    }
    

    Remarque

    Il s’agit du code qui sous-tend le thread. Ce code est une boucle infinie qui incrémente ou décrémente aléatoirement la valeur dans ProgressBar1, puis attend 100 millisecondes avant de continuer.

  10. Ajoutez le gestionnaire d’événements suivant Form1_Load pour Form1. Ce code crée un thread, fait du thread un thread d’arrière-plan, puis démarre le thread.

    private void Form1_Load(object sender, System.EventArgs e)
    {
        Thread trd = new Thread(new ThreadStart(this.ThreadTask));
        trd.IsBackground = true;
        trd.Start();
    }
    

Vérifier que cela fonctionne

  1. Générez et exécutez l’application. Notez que la valeur dans ProgressBar1 change de façon aléatoire. Il s’agit du nouveau thread en cours d’opération.

  2. Pour démontrer que le thread main est indépendant du thread qui modifie la valeur de ProgressBar1, cliquez sur le bouton du formulaire. Vous recevez une boîte de dialogue avec le message d’erreur suivant :

    Il s’agit du thread main

Attendez l’entrée. Notez que la valeur dans ProgressBar1 continue à changer.

Résoudre les problèmes

Dans les applications plus complexes, veillez à synchroniser plusieurs threads lorsque vous accédez à des variables partagées. Pour plus d’informations, consultez l’instruction lock et les rubriques associées dans la documentation d’aide en ligne de Visual C# .NET.

References

Pour plus d’informations, consultez Thread Class.