Dela via


Använda Visual C# för att skapa en tråd

Du kan skriva flertrådade program i Microsoft Visual C# .NET eller i Visual C#. Den här artikeln beskriver hur ett enkelt Visual C#-program kan skapa och hantera trådar.

Ursprunglig produktversion: Visual C#
Ursprungligt KB-nummer: 815804

Krav

I följande lista beskrivs de rekommenderade maskinvaru-, programvaru-, nätverksinfrastruktur- och servicepaket som du behöver:

  • Windows eller Windows Server
  • Visual C# .NET eller Visual C#

Den här artikeln förutsätter att du är bekant med följande ämnen:

  • Visual C#-programmering
  • Visual Studio .NET Integrated Development Environment (IDE) eller Visual Studio IDE

Den här artikeln refererar till namnområdet System.Threading.NET Framework-klassbibliotek .

Skapa ett Visual C#-program med trådar

  1. Starta Visual Studio .NET, Visual Studio eller Visual C# Express Edition.

  2. Skapa ett nytt Visual C# Windows-programprojekt med namnet ThreadWinApp.

  3. Lägg till en knappkontroll i formuläret. Som standard heter knappen Button1.

  4. Lägg till en ProgressBar-komponent i formuläret. Som standard heter förloppsindikatorn ProgressBar1.

  5. Högerklicka på formuläret och klicka sedan på Visa kod.

  6. Lägg till följande instruktion i början av filen:

    using System.Threading;
    
  7. Lägg till följande button1_Click händelsehanterare för Button1:

    private void button1_Click(object sender, System.EventArgs e)
    {
        MessageBox.Show("This is the main thread");
    }
    
  8. Lägg till följande variabel i Form1 klassen:

    private Thread trd;
    
  9. Lägg till följande metod i klassen 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);
        }
    }
    

    Kommentar

    Det här är koden som ligger till grund för tråden. Den här koden är en oändlig loop som slumpmässigt ökar eller minskar värdet i ProgressBar1 och sedan väntar 100 millisekunder innan den fortsätter.

  10. Lägg till följande Form1_Load händelsehanterare för Form1. Den här koden skapar en ny tråd, gör tråden till en bakgrundstråd och startar sedan tråden.

    private void Form1_Load(object sender, System.EventArgs e)
    {
        Thread trd = new Thread(new ThreadStart(this.ThreadTask));
        trd.IsBackground = true;
        trd.Start();
    }
    

Kontrollera att det fungerar

  1. Skapa och kör programmet. Observera att värdet i ProgressBar1 ändras slumpmässigt. Det här är den nya tråden som är i drift.

  2. Om du vill visa att huvudtråden är oberoende av tråden som ändrar värdet för ProgressBar1 klickar du på knappen i formuläret. Du får en dialogruta med följande felmeddelande:

    Det här är huvudtråden

Vänta på indata. Observera att värdet i ProgressBar1 fortsätter att ändras.

Felsöka

I mer komplexa program kontrollerar du att du synkroniserar flera trådar när du får åtkomst till delade variabler. Mer information finns i låssatsen och relaterade ämnen i hjälpdokumentationen för Visual C# .NET online.

Referenser

Mer information finns i Trådklass.