Partager via


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 explique comment une application Visual C# simple peut créer et gérer des threads.

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

Spécifications

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.Threadingbibliothè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 Button 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);
        }
    }
    

    Note

    Il s’agit du code qui sous-tend le thread. Ce code est une boucle infinie qui incrémente ou décrémente de façon aléatoire 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érifiez qu’elle 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 principal est indépendant du thread qui modifie la valeur de ProgressBar1, cliquez sur le bouton sur le formulaire. Vous recevez une boîte de dialogue avec le message d’erreur suivant :

    Il s’agit du thread principal

Attendez l’entrée. Notez que la valeur dans ProgressBar1continues à modifier.

Résolution des 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 connexes dans la documentation d’aide en ligne de Visual C# .NET.

References

Pour plus d’informations, consultez Classe de thread.