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 den rekommenderade maskinvaran, programvaran, nätverksinfrastrukturen och servicepaketen 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 Form1 klassen :

    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);
        }
    }
    

    Obs!

    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 det 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 används.

  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ökning

I mer komplexa program ska du synkronisera flera trådar när du har åtkomst till delade variabler. Mer information finns i lås-instruktionen och relaterade ämnen i hjälpdokumentationen för Visual C# .NET online.

Referenser

Mer information finns i Trådklass.