Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 31433|Válasz: 5

[Forrás] .net/c# Feladatosztály async/await-szel

[Linket másol]
Közzétéve 2017. 10. 20. 22:32:17 | | |
Feladatosztály

A Feladatosztály egy aszinkron műveleti absztrakció, amelyet a .NET 4.0 után biztosítottak, teljes úttal a System.Threading.Tasks.Task oldalra.

A Feladatosztályt az aszinkron műveletek ábrázolására használják, amelyekben nincs visszatérési érték, míg aszinkron műveletek esetén a Feladat osztály Feladat alosztályát kell használni<TResult>.
A Feladatosztály által létrehozott feladatokat hozzáadják a szálkészlethez.

<TResult>A Feladat/Feladat osztály fő konstruktorai a következők:


Miután létrehozták, a feladatot a Start() módszerrel lehet elindítani:


A tényleges fejlesztés során a Task osztály statikus Run() módszerét, vagy a gyári osztály StartNew() tag metódusát használják új feladatok létrehozására és indítására.

Néhány gyakori módszer a Feladat osztályban:


async/await kulcsszavas

A C# 5.0 bevezette az asszinkron és várakozó kulcsszavakat, amelyek jobb támogatást nyújtottak a nyelvi szintű párhuzamossághoz.

Az aszinkron módszerek jelölésére használják:
Az aszinkron kulcsszava, amely kontextuális kulcsszó, és csak egy metódus és Lambda módosításakor kezelik kulcsszóként, más területeken pedig azonosítóként kezelik.
Az aszinkron kulcsszavaval statikus metódusokat jelölhet, de nem belépő pontokat (Main() metódusok.
Az aszinkron címkével jelölt metódus visszaküldési értéke <TResult>Feladat, Feladat vagy void értéknek kell lennie.
Az await segítségével várják az aszinkron módszer eredményét:
Az await kulcsszó szintén kontextuális kulcsszó, és csak az aszinkron címkézett módszerben számít kulcsszónak.
Az await kulcsszó az aszinkron metódus és a Feladat, valamint <TResult>a Feladat előtt használható, hogy megvárjuk az aszinkron feladat végrehajtásának végét.
Egy egyszerű aszinkron módszerstruktúra a következő:
Nem arról van szó, hogy a metódus aszinkron kulcsszóval van jelölve, hanem aszinkron metódus, és az aszinkron metódusban megjelenő utasítások is szinkronon végrehajtásra kerülnekAz aszinkron módon végrehajtott tartalmat a Task osztály segítségével kell végrehajtani
Valójában egy olyan aszinkron metódus, amely nem tartalmaz await utasításokat, szinkron módon fut le, ekkor a fordító figyelmeztetést ad.

Egyszerű példa: aszinkron/várakozás használata a tartalom egyidejű kimenetére a képernyőn:

Kimenet: (Mono 4.4.0 && ArchLinux x64)

Nem nehéz látni a fenti programból, hogy az aszinkron kulcsszava, aszinkron metódus címkézve a kód az await használata előtt szinkron módon történik, és az await hívása után a megmaradt kód aszinkron fut egy külön szálon.





Előző:fsadf{:1_2:}
Következő:RestSharp a. NET(C#) HTTP helper class component
Közzétéve 2017. 11. 01. 19:57:12 |
Nézd meg, nézz meg, nézz meg
Közzétéve 2019. 01. 29. 9:37:53 |
Hosszú ideig kerestem a Baidu-n #async Feladat Invoke()Állva találtam magamA fenti módszer az aszinkron kulcsszót használja a Feladatosztály Invoke metódjának visszaadására, amely megoldja a szál problémát is: mit jelent ez az egész függvény?
Közzétéve 2019. 01. 29. 21:14:36 |
Ez tényleg jó dolog, és írok egy ilyen megosztást, ha lesz időm
Közzétéve 2019. 02. 15. 16:17:22 |
A kimeneti eredmény nem látja egyértelműen az aszinkron végrehajtás hatását, és az aszinkron bemenetnek egyszerre kell lennie
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com