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.

Originalversion des Produkts:   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 KlassenbibliotheksnamespaceSystem.Threading.

Erstellen einer Visual C#-Anwendung mit Threads

  1. Starten Sie Visual Studio .NET, Visual Studio oder Visual C# Express Edition.

  2. Erstellen Sie ein neues Visual C#-Windows Anwendungsprojekt mit dem Namen "ThreadWinApp".

  3. Fügen Sie dem Formular ein Schaltfläche-Steuerelement hinzu. Standardmäßig heißt die Schaltfläche "Button1".

  4. Fügen Sie dem Formular eine ProgressBar-Komponente hinzu. Standardmäßig heißt die Statusanzeige "ProgressBar1".

  5. Klicken Sie mit der rechten Maustaste auf das Formular, und klicken Sie dann auf " Code anzeigen".

  6. Fügen Sie am Anfang der Datei die folgende Anweisung hinzu:

    using System.Threading;
    
  7. 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");
    }
    
  8. Fügen Sie der Klasse die Form1 folgende Variable hinzu:

    private Thread trd;
    
  9. 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);
        }
    }
    

    Hinweis

    Dies ist der Code, der dem Thread zugrunde liegt. Dieser Code ist eine Endlosschleife, die den Wert in ProgressBar1 nach dem Zufallsprinzip erhöht oder verringert und dann 100 Millisekunden wartet, bevor er fortgesetzt wird.

  10. Fügen Sie den folgenden Form1_Load Ereignishandler für Form1 hinzu. Dieser Code erstellt einen neuen Thread, macht 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 es funktioniert

  1. 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, der ausgeführt wird.

  2. Um zu veranschaulichen, dass der Hauptthread unabhängig von dem 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 Dokumentation zur Lock-Anweisung und verwandten Themen in der Visual C# .NET Online-Hilfedokumentation.

References

Weitere Informationen finden Sie unter Threadklasse.