Verwenden von Visual C# zum Erstellen eines Threads
Sie können Multithread-Anwendungen in Microsoft Visual C# .NET oder in Visual C# schreiben. In diesem Artikel wird beschrieben, wie eine einfache Visual C#-Anwendung Threads erstellen und verwalten kann.
Originalproduktversion: Visual C#
Ursprüngliche KB-Nummer: 815804
Anforderungen
In der folgenden Liste sind die empfohlenen Hardware-, Software-, Netzwerkinfrastruktur- und Service Packs aufgeführt, die Sie benötigen:
- Windows oder Windows Server
- Visual C# .NET oder Visual C#
In diesem Artikel wird davon ausgegangen, dass Sie mit den folgenden Themen vertraut sind:
- Visual C#-Programmierung
- Visual Studio .NET Integrated Development Environment (IDE) oder Visual Studio IDE
Dieser Artikel bezieht sich auf den .NET Framework-Klassenbibliotheksnamespace System.Threading
.
Erstellen einer Visual C#-Anwendung mit Threads
Starten Sie Visual Studio .NET, Visual Studio oder Visual C# Express Edition.
Erstellen Sie ein neues Visual C#-Windows-Anwendungsprojekt mit dem Namen ThreadWinApp.
Fügen Sie dem Formular ein Schaltflächen-Steuerelement hinzu. Standardmäßig heißt die Schaltfläche "Button1".
Fügen Sie dem Formular eine ProgressBar-Komponente hinzu. Standardmäßig heißt die Statusleiste "ProgressBar1".
Klicken Sie mit der rechten Maustaste auf das Formular, und klicken Sie dann auf "Code anzeigen".
Fügen Sie die folgende Anweisung am Anfang der Datei hinzu:
using System.Threading;
Fügen Sie den folgenden
button1_Click
Ereignishandler für Button1 hinzu:private void button1_Click(object sender, System.EventArgs e) { MessageBox.Show("This is the main thread"); }
Fügen Sie der Klasse die
Form1
folgende Variable hinzu:private Thread trd;
Fügen Sie der
Form1
-Klasse die folgende Methode hinzu: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); } }
Notiz
Dies ist der Code, der dem Thread zugrunde liegt. Dieser Code ist eine Endlosschleife, die den Wert in ProgressBar1 zufällig erhöht oder herabsetzt und dann 100 Millisekunden wartet, bevor er fortgesetzt wird.
Fügen Sie den folgenden
Form1_Load
Ereignishandler für Form1 hinzu. Dieser Code erstellt einen neuen Thread, erstellt den Thread zu einem Hintergrundthread und startet dann den Thread.private void Form1_Load(object sender, System.EventArgs e) { Thread trd = new Thread(new ThreadStart(this.ThreadTask)); trd.IsBackground = true; trd.Start(); }
Überprüfen, ob sie funktioniert
Erstellen Sie die Anwendung, und führen Sie sie aus. Beachten Sie, dass sich der Wert in ProgressBar1 zufällig ändert. Dies ist der neue Thread im Vorgang.
Um zu veranschaulichen, dass der Hauptthread unabhängig vom Thread ist, der den Wert von ProgressBar1 ändert, klicken Sie auf die Schaltfläche im Formular. Sie erhalten ein Dialogfeld mit der folgenden Fehlermeldung:
Dies ist der Hauptthread.
Warten Sie auf Eingabe. Beachten Sie, dass sich der Wert in ProgressBar1continues ändert.
Problembehandlung
Stellen Sie in komplexeren Anwendungen sicher, dass Sie mehrere Threads synchronisieren, wenn Sie auf freigegebene Variablen zugreifen. Weitere Informationen finden Sie in der Onlinehilfedokumentation zu Visual C# .NET in der Lock-Anweisung und verwandten Themen.
References
Weitere Informationen finden Sie unter Threadklasse.