Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 31433|Antwoord: 5

[Bron] .net/c# Taakklasse met async/await

[Link kopiëren]
Geplaatst op 20-10-2017 22:32:17 | | |
Taakklasse

De Task-klasse is een asynchrone operatieabstractie die na .NET 4.0 werd aangeboden, met het volledige pad naar System.Threading.Tasks.Task.

De Task-klasse wordt gebruikt om asynchrone bewerkingen zonder retourwaarde weer te geven, en voor asynchrone bewerkingen met retourwaarden moet de subklasse Task van de Taakklasse worden gebruikt<TResult>.
Taken die door de Task-klasse worden aangemaakt, worden toegevoegd aan de threadpool.

De <TResult>belangrijkste constructors van de Task/Task-klasse zijn als volgt:


Eenmaal aangemaakt, kan de taak worden gestart met de Start()-methode:


In de daadwerkelijke ontwikkeling worden de statische methode Run() van de Task-klasse of de lid-methode StartNew() van de factory-klasse TaskFactory vaker gebruikt om nieuwe taken te maken en te starten.

Enkele veelvoorkomende methoden in de Taakklasse:


async/await trefwoord

C# 5.0 introduceerde de sleutelwoorden async en await, wat betere ondersteuning voor gelijktijdigheid op taalniveau bood.

Async wordt gebruikt om asynchrone methoden aan te duiden:
Het asynchrone trefwoord is een contextueel trefwoord en wordt alleen als trefwoord behandeld bij het aanpassen van een methode en Lambda, en wordt in andere gebieden als identificatie behandeld.
Het asynchrone trefwoord kan statische methoden markeren, maar geen toegangspunten (Main()-methoden).
De retourwaarde van de methode die met asynchroon is getagd, moet <TResult>een van Task, Task of void zijn.
await wordt gebruikt om te wachten op het resultaat van de asynchrone methode:
Het await-sleutelwoord is eveneens een contextueel trefwoord en wordt alleen als een trefwoord beschouwd in de asynchroon getagde methode.
Het await-sleutelwoord kan vóór de asynchrone methode en Task, en <TResult>Task, worden gebruikt om te wachten tot het einde van de asynchrone taakuitvoering is afgelopen.
Een eenvoudige asynchrone methodestructuur is als volgt:
Het is niet zo dat de methode wordt gemarkeerd met het asynchrone trefwoord, het is een asynchrone methode, en de statements die direct binnen de asynchrone methode verschijnen, worden ook synchroon uitgevoerdInhoud die asynchroon wordt uitgevoerd, moet worden uitgevoerd met de Task-klasse
In feite wordt een asynchrone methode die geen await-instructies bevat synchroon uitgevoerd, waarna de compiler een waarschuwing geeft.

Eenvoudig voorbeeld, met async/await om content gelijktijdig op het scherm uit te voeren:

Output: (Mono 4.4.0 & ArchLinux x64)

Het is niet moeilijk te zien uit het bovenstaande programma dat in de asynchrone sleutelwoord getagde asynchrone methode de code vóór gebruik van await synchroon wordt uitgevoerd, en nadat await is aangeroepen, de resterende code asynchroon op een aparte thread draait.





Vorig:fsadf{:1_2:}
Volgend:RestSharp a. NET(C#) HTTP helper class component
Geplaatst op 01-11-2017 19:57:12 |
Kijk maar, kijk maar, kijk eens
Geplaatst op 29-01-2019 09:37:53 |
Ik heb lang gezocht op Baidu #async Task Invoke()Ik stondDe bovenstaande methode gebruikt het asynchrone trefwoord om een Invoke-methode van de Task-klasse terug te geven, wat ook het threadprobleem oplost; wat is de betekenis van deze hele functie?
Geplaatst op 29-01-2019 21:14:36 |
Dit is echt een goede zaak, en ik zal zo'n deel schrijven als ik tijd heb
Geplaatst op 15-02-2019 16:17:22 |
Het uitvoerresultaat kan het effect van asynchrone uitvoering niet duidelijk zien, en asynchrone invoer moet gelijktijdig zijn
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com