Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 31433|Svare: 5

[Kilde] .net/c# Oppgaveklasse med async/await

[Kopier lenke]
Publisert på 20.10.2017 22:32:17 | | |
Oppgaveklasse

Task-klassen er en asynkron operasjonsabstraksjon som ble gitt etter .NET 4.0, med full sti til System.Threading.Tasks.Task.

Task-klassen brukes til å representere asynkrone operasjoner uten returverdi, og for asynkrone operasjoner med returverdier bør underklassen Task i Task-klassen <TResult>brukes.
Oppgaver opprettet av Task-klassen legges til trådpoolen.

<TResult>Hovedkonstruktørene av Task/Task-klassen er som følger:


Når oppgaven er opprettet, kan den startes ved hjelp av Start()-metoden:


I faktisk utvikling brukes den statiske metoden Run() i Task-klassen eller medlemsmetoden StartNew() i fabrikk-klassen TaskFactory oftere til å opprette og starte nye oppgaver.

Noen vanlige metoder i oppgaveklassen:


async/await-nøkkelordet

C# 5.0 introduserte async og await-nøkkelordene, som ga bedre støtte for samtidighet på språknivå.

Asynkron brukes til å markere asynkrone metoder:
Det asynkrone nøkkelordet er et kontekstuelt nøkkelord og vil kun bli behandlet som et nøkkelord når en metode og Lambda endres, og vil bli behandlet som en identifikator i andre områder.
Det asynkrone nøkkelordet kan markere statiske metoder, men ikke inngangspunkter (Main()-metoder).
Returverdien til metoden merket med asynkron må være <TResult>én av Task, Task eller void.
await brukes til å vente på resultatet av den asynkrone metoden:
Await-nøkkelordet er også et kontekstuelt nøkkelord og regnes kun som et nøkkelord i den asynkrone taggede metoden.
Nøkkelordet await kan brukes før den asynkrone metoden og Task, og <TResult>Task, for å vente på slutten av den asynkrone oppgaven.
En enkel asynkron metodestruktur er som følger:
Det er ikke slik at metoden er merket med det asynkrone nøkkelordet, det er en asynkron metode, og setningene som vises direkte inne i den asynkrone metoden utføres også synkrontInnhold som utføres asynkront må utføres med Task-klassen
Faktisk vil en asynkron metode som ikke inneholder noen await-setninger bli kjørt synkront, og da vil kompilatoren gi en advarsel.

Enkelt eksempel, ved å bruke async/await for å sende innhold samtidig på skjermen:

Utdata: (Mono 4.4.0 & ArchLinux x64)

Det er ikke vanskelig å se fra programmet ovenfor at i den asynkrone nøkkelordmerket asynkrone metoden, kjøres koden før bruk av await synkront, og etter at await er kalt, kjører resten av koden asynkront på en separat tråd.





Foregående:fsadf{:1_2:}
Neste:RestSharp a. NET(C#) HTTP hjelpeklassekomponent
Publisert på 01.11.2017 19:57:12 |
Ta en titt, ta en titt, ta en titt
Publisert på 29.01.2019 09:37:53 |
Jeg lette lenge på Baidu #asynkron Task Invoke()Jeg fant meg selv ståendeMetoden ovenfor bruker det asynkrone nøkkelordet for å returnere en Invoke-metode i Task-klassen, som også løser trådproblemet, hva betyr hele denne funksjonen?
Publisert på 29.01.2019 21:14:36 |
Dette er virkelig en god ting, og jeg vil skrive en slik deling når jeg har tid
Publisert på 15.02.2019 16:17:22 |
Utgangsresultatet kan ikke tydelig se effekten av asynkron utførelse, og asynkron input bør være samtidig
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com