Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 31433|Svar: 5

[Kilde] .net/c# Opgaveklasse med asynkron/await

[Kopier link]
Opslået på 20/10/2017 22.32.17 | | |
Opgaveklasse

Task-klassen er en asynkron operationsabstraktion, der blev leveret efter .NET 4.0, med den fulde sti til System.Threading.Tasks.Task.

Task-klassen bruges til at repræsentere asynkrone operationer uden returværdi, og for asynkrone operationer med returværdier bør underklassen Task fra Task-klassen anvendes<TResult>.
Opgaver, der oprettes af Task-klassen, tilføjes til trådpuljen.

De <TResult>vigtigste konstruktører af Task/Task-klassen er som følger:


Når opgaven er oprettet, kan den startes ved hjælp af Start()-metoden:


I den faktiske udvikling bruges den statiske metode Run() i Task-klassen eller medlemsmetoden StartNew() i factory-klassen TaskFactory oftere til at oprette og starte nye opgaver.

Nogle almindelige metoder i opgaveklassen:


async/await-nøgleordet

C# 5.0 introducerede async og await-nøgleordene, som gav bedre understøttelse af samtidighed på sprogniveau.

Async bruges til at markere asynkrone metoder:
Det asynkrone nøgleord er et kontekstuelt nøgleord og behandles kun som et nøgleord, når en metode og Lambda ændres, og vil blive behandlet som en identifikator i andre områder.
Det asynkrone nøgleord kan markere statiske metoder, men ikke indgangspunkter (Main()-metoder).
Returværdien for metoden, der er tagget med asynkron, skal være <TResult>én af Task, Task eller void.
await bruges til at vente på resultatet af den asynkrone metode:
Await-nøgleordet er ligeledes et kontekstuelt nøgleord og betragtes kun som et nøgleord i den asynkrone taggede metode.
Nøgleordet await kan bruges før den asynkrone metode og Task, og <TResult>Task, for at vente på slutningen af den asynkrone opgaveudførelse.
En simpel asynkron metodestruktur er som følger:
Det er ikke sådan, at metoden er markeret med det asynkrone nøgleord, det er en asynkron metode, og de sætninger, der optræder direkte inde i den asynkrone metode, udføres også synkrontIndhold, der udføres asynkront, skal udføres ved hjælp af Task-klassen
Faktisk vil en asynkron metode, der ikke indeholder nogen await-sætninger, blive udført synkront, hvorefter compileren vil give en advarsel.

Simpelt eksempel, hvor man bruger async/await til at outputte indhold samtidig på skærmen:

Output: (Mono 4.4.0 & ArchLinux x64)

Det er ikke svært at se ud fra ovenstående program, at i den asynkrone nøgleordsmærkede asynkrone metode udføres koden før brug af await synkront, og efter at await er kaldt, kører den resterende kode asynkront på en separat tråd.





Tidligere:fsadf{:1_2:}
Næste:RestSharp a. NET(C#) HTTP hjælpeklassekomponent
Opslået på 01/11/2017 19.57.12 |
Tag et kig, tag et kig, tag et kig
Opslået på 29/01/2019 09.37.53 |
Jeg søgte længe på Baidu #async Task Invoke()Jeg fandt mig selv ståendeOvenstående metode bruger det asynkrone nøgleord til at returnere en Invoke-metode i Task-klassen, hvilket også løser trådproblemet, hvad betyder hele denne funktion?
Opslået på 29/01/2019 21.14.36 |
Det er virkelig en god ting, og jeg vil skrive en deling som denne, når jeg har tid
Opslået på 15/02/2019 16.17.22 |
Outputresultatet kan ikke klart se effekten af asynkron eksekvering, og asynkron input bør være samtidig
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com