Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 31433|Odgovoriti: 5

[Vir] .net/c# razred nalog z async/await

[Kopiraj povezavo]
Objavljeno na 20. 10. 2017 22:32:17 | | |
Razred nalog

Razred Task je asinhrona apstrakcija operacij, ki je na voljo po .NET 4.0, s polno potjo do System.Threading.Tasks.Task.

Razred Task se uporablja za predstavitev asinhronih operacij brez vrnjene vrednosti, za asinhrone operacije z vrnjenimi vrednostmi pa je treba uporabiti podrazred Task razreda Task<TResult>.
Naloge, ki jih ustvari razred Naloga, se dodajo v bazen niti.

Glavni <TResult>konstruktorji razreda Naloga/Naloga so naslednji:


Ko je naloga ustvarjena, jo lahko začnemo z metodo Start():


V dejanskem razvoju se za ustvarjanje in začetek novih nalog pogosteje uporabljata statična metoda Run() razreda Task Factory ali članica StartNew() razreda TaskFactory.

Nekatere pogoste metode v razredu Naloge:


async/await ključna beseda

C# 5.0 je uvedel async in await ključne besede, kar je omogočilo boljšo podporo sočasnosti na jezikovni ravni.

Async se uporablja za označevanje asinhronih metod:
Asinhrona ključna beseda je kontekstualna ključna beseda in bo obravnavana le kot ključna beseda pri spreminjanju metode in Lambda, v drugih področjih pa kot identifikator.
Asinhrona ključna beseda lahko označi statične metode, ne pa vstopnih točk (Main() metode).
Vrnjena vrednost metode, označene z asynchron, mora biti <TResult>ena od Task, Task, ali void.
await se uporablja za čakanje na rezultat asinhrone metode:
Ključna beseda 'čakaj' je prav tako kontekstualna ključna beseda in se šteje le za ključno besedo v asinhroni metodi označevanja.
Ključna beseda await se lahko uporabi pred asinhrono metodo, Task, in <TResult>Task, za čakanje na konec asinhrone izvedbe naloge.
Preprosta asinhrona struktura metode je naslednja:
Metoda ni označena z asinhrono ključno besedo, gre za asinhrono metodo, in stavki, ki se pojavijo neposredno znotraj asinhrone metode, se prav tako izvajajo sinhronoVsebino, ki se izvaja asinhrono, je treba izvajati z uporabo razreda Task
Pravzaprav se bo sinhrono izvedela asinhrona metoda, ki ne vsebuje nobenih ukazov čakanja, pri čemer bo prevajalnik dal opozorilo.

Preprost primer, uporaba async/await za sočasni prikaz vsebine na zaslonu:

Izhod: (Mono 4.4.0 & ArchLinux x64)

Iz zgornjega programa ni težko videti, da se pri asinhroni metodi z oznako asynchrone ključne besede koda pred uporabo await izvaja sinhrono, po klicu await pa preostala koda teče asinhrono na ločeni niti.





Prejšnji:fsadf{:1_2:}
Naslednji:RestSharp a. NET(C#) HTTP helper class component
Objavljeno na 1. 11. 2017 19:57:12 |
Poglej, poglej, poglej
Objavljeno na 29. 01. 2019 09:37:53 |
Dolgo sem iskal na Baidu #async Task Invoke()Ugotovil sem, da stojimZgornja metoda uporablja asinhrono ključno besedo za vrnitev metode Invoke razreda Task, kar prav tako rešuje problem niti, kaj pomeni celotna funkcija?
Objavljeno na 29. 01. 2019 21:14:36 |
To je res dobra stvar in napisal bom takšno delitev, ko bom imel čas
Objavljeno na 15. 02. 2019 16:17:22 |
Izhodni rezultat ne more jasno pokazati učinka asinhronega izvajanja, zato mora biti asinhroni vhod sočasen
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com