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