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.Threading
de la bibliothèque de classes .NET Framework .
Créer une application Visual C# avec des threads
Démarrez Visual Studio .NET, Visual Studio ou Visual C# Express Edition.
Créez un projet d’application Windows Visual C# nommé ThreadWinApp.
Ajoutez un contrôle Bouton au formulaire. Par défaut, le bouton est nommé Button1.
Ajoutez un composant ProgressBar au formulaire. Par défaut, la barre de progression est nommée ProgressBar1.
Cliquez avec le bouton droit sur le formulaire, puis cliquez sur Afficher le code.
Ajoutez l’instruction suivante au début du fichier :
using System.Threading;
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"); }
Ajoutez la variable suivante à la
Form1
classe :private Thread trd;
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.
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
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.
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.