Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 31433|Svar: 5

[Källa] .net/c# Uppgiftsklass med async/await

[Kopiera länk]
Publicerad på 2017-10-20 22:32:17 | | |
Uppgiftsklass

Task-klassen är en asynkron operationsabstraktion som tillhandahålls efter .NET 4.0, med hela vägen till System.Threading.Tasks.Task.

Task-klassen används för att representera asynkrona operationer utan returvärde, och för asynkrona operationer med returvärden bör underklassen Task i Task-klassen <TResult>användas.
Uppgifter som skapas av Task-klassen läggs till i trådpoolen.

De <TResult>huvudsakliga konstruktörerna för klassen Task/Task är följande:


När uppgiften är skapad kan den startas med Start()-metoden:


I faktisk utveckling används den statiska metoden Run() i Task-klassen eller medlemsmetoden StartNew() i fabriksklassen TaskFactory oftare för att skapa och starta nya uppgifter.

Några vanliga metoder i Uppgiftsklassen:


async/await-nyckelordet

C# 5.0 introducerade nyckelorden async och await, vilket gav bättre stöd för samtidighet på språknivå.

Asynkron används för att markera asynkrona metoder:
Det asynkrona nyckelordet är ett kontextuellt nyckelord och behandlas endast som ett nyckelord när en metod och Lambda ändras, och kommer att behandlas som en identifierare i andra områden.
Det asynkrona nyckelordet kan markera statiska metoder, men inte ingångspunkter (Main()-metoder).
Returvärdet för metoden taggad med async måste vara <TResult>ett av Task, Task eller void.
await används för att vänta på resultatet av den asynkrona metoden:
Await-nyckelordet är också ett kontextuellt nyckelord och betraktas endast som ett nyckelord i den asynkrona taggade metoden.
Nyckelordet await kan användas före den asynkrona metoden och Task, och <TResult>Task, för att vänta på slutet av den asynkrona uppgiftskörningen.
En enkel asynkron metodstruktur är följande:
Det är inte så att metoden är markerad med det asynkrona nyckelordet, det är en asynkron metod, och de satser som visas direkt i den asynkrona metoden körs också synkrontInnehåll som körs asynkront måste köras med Task-klassen
Faktum är att en asynkron metod som inte innehåller några await-satser kommer att exekveras synkront, varpå kompilatorn ger en varning.

Enkelt exempel, att använda async/await för att mata ut innehåll samtidigt på skärmen:

Utdata: (Mono 4.4.0 & ArchLinux x64)

Det är inte svårt att se från ovanstående program att i den asynkrona nyckelordstaggade asynkrona metoden körs koden före användning av await synkront, och efter att await anropats körs den återstående koden asynkront på en separat tråd.





Föregående:fsadf{:1_2:}
Nästa:RestSharp a. NET(C#) HTTP hjälpklasskomponent
Publicerad på 2017-11-01 19:57:12 |
Ta en titt, ta en titt, ta en titt
Publicerad på 2019-01-29 09:37:53 |
Jag sökte länge på Baidu #async Task Invoke()Jag fann mig själv ståOvanstående metod använder det asynkrona nyckelordet för att returnera en Invoke-metod i Task-klassen, vilket också löser trådproblemet, vad betyder hela denna funktion?
Publicerad på 2019-01-29 21:14:36 |
Det här är verkligen en bra sak, och jag kommer att skriva en sådan delning när jag har tid
Publicerad på 2019-02-15 16:17:22 |
Utgångsresultatet kan inte tydligt se effekten av asynkron exekvering, och asynkron indata bör vara samtidigt
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com