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
Starta Visual Studio .NET, Visual Studio eller Visual C# Express Edition.
Skapa ett nytt Visual C# Windows-programprojekt med namnet ThreadWinApp.
Lägg till en knappkontroll i formuläret. Som standard heter knappen Button1.
Lägg till en ProgressBar-komponent i formuläret. Som standard heter förloppsindikatorn ProgressBar1.
Högerklicka på formuläret och klicka sedan på Visa kod.
Lägg till följande instruktion i början av filen:
using System.Threading;
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"); }
Lägg till följande variabel i
Form1
klassen:private Thread trd;
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.
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
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.
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.