Dela via


Använda trådar och trådar

Med .NET kan du skriva program som utför flera åtgärder samtidigt. Åtgärder med potential att hålla upp andra åtgärder kan köras på separata trådar, en process som kallas multitrådning eller fri trådning.

Program som använder multitrådning är mer dynamiska för användarindata eftersom användargränssnittet förblir aktivt när processorintensiva uppgifter körs på separata trådar. Multitrådning är också användbart när du skapar skalbara program eftersom du kan lägga till trådar när arbetsbelastningen ökar.

Kommentar

Om du behöver mer kontroll över beteendet för programmets trådar kan du hantera trådarna själv. Multitrådad programmering förenklas dock avsevärt med System.Threading.Tasks.Parallel klasserna och System.Threading.Tasks.Task , Parallell LINQ (PLINQ), samtidiga samlingsklasser i System.Collections.Concurrent namnområdet och en programmeringsmodell som baseras på begreppet uppgifter snarare än trådar. Mer information finns i Parallel Programming and Task Parallel Library (TPL).

Gör så här: Skapa och starta en ny tråd

Du skapar en ny tråd genom att skapa en ny instans av System.Threading.Thread klassen. Du anger namnet på den metod som du vill köra på den nya tråden till konstruktorn. Om du vill starta en skapad tråd anropar du Thread.Start metoden. Mer information och exempel finns i artikeln Skapa trådar och skicka data vid starttid och API-referensen Thread .

Gör så här: Stoppa en tråd

Om du vill avsluta körningen av en tråd använder du System.Threading.CancellationToken. Det ger ett enhetligt sätt att stoppa trådar tillsammans. Mer information finns i Annullering i hanterade trådar.

Ibland går det inte att stoppa en tråd kooperativt eftersom den kör kod från tredje part som inte är utformad för kooperativ annullering. I det här fallet kanske du vill avsluta körningen med två tvångsskäl. Om du vill avsluta körningen av en tråd med tvång kan du använda Thread.Abort metoden i .NET Framework. Den metoden genererar en ThreadAbortException på tråden som den anropas på. Mer information finns i Förstöra trådar. Metoden Thread.Abort stöds inte i .NET Core. Om du behöver avsluta körningen av kod från tredje part i .NET Core kör du den i den separata processen och använder Process.Kill metoden.

System.Threading.CancellationToken Är inte tillgängligt före .NET Framework 4. Om du vill stoppa en tråd i äldre .NET Framework-versioner använder du teknikerna för trådsynkronisering för att implementera den kooperativa annulleringen manuellt. Du kan till exempel skapa det flyktiga booleska fältet shouldStop och använda det för att begära att koden som körs av tråden ska stoppas. Mer information finns i flyktiga I C#-referens och System.Threading.Volatile.

Thread.Join Använd metoden för att få den anropande tråden att vänta på att tråden avslutas.

Gör så här: Pausa eller avbryta en tråd

Du använder Thread.Sleep metoden för att pausa den aktuella tråden under en angiven tid. Du kan avbryta en blockerad tråd genom att anropa Thread.Interrupt metoden. Mer information finns i Pausa och avbryta trådar.

Trådegenskaper

I följande tabell visas några av Thread egenskaperna:

Property beskrivning
IsAlive Returnerar true om en tråd har startats och ännu inte har avslutats normalt eller avbrutits.
IsBackground Hämtar eller anger ett booleskt värde som anger om en tråd är en bakgrundstråd. Bakgrundstrådar är som förgrundstrådar. En bakgrundstråd förhindrar dock inte att en process stoppas. När alla förgrundstrådar som tillhör en process har stoppats avslutar den vanliga språkkörningen processen genom att anropa Abort metoden på bakgrundstrådar som fortfarande finns kvar. Mer information finns i Förgrunds- och bakgrundstrådar.
Name Hämtar eller anger namnet på en tråd. Används oftast för att identifiera enskilda trådar när du felsöker.
Priority Hämtar eller anger ett ThreadPriority värde som används av operativsystemet för att prioritera trådschemaläggning. Mer information finns i Schemalägga trådar och referensen ThreadPriority .
ThreadState Hämtar ett ThreadState värde som innehåller de aktuella tillstånden för en tråd.

Se även