Mi az a ConfigureAwait?
Mi az a ConfigureAwait?

Videó: Mi az a ConfigureAwait?

Videó: Mi az a ConfigureAwait?
Videó: How to await ANYTHING in C# 2024, November
Anonim

ConfigureAwait (hamis) olyan feladatot jelent, amely már befejeződött, mire várt (ami valójában hihetetlenül gyakori), akkor a ConfigureAwait (false) értelmetlen lesz, mivel a szál ezután is folytatja a kód végrehajtását a metódusban, és továbbra is ugyanabban a kontextusban, mint korábban.

Ezt követően az is felmerülhet, hogy mi haszna a ConfigureAwait false-nak?

ConfigureAwait ( hamis ) úgy konfigurálja a feladatot, hogy a várakozás utáni folytatást ne a hívó környezetében kelljen futtatni, elkerülve ezzel az esetleges holtpontokat.

A fentieken kívül mi az a SynchronizationContext? SynchronizationContext az aktuális környezet reprezentációja, amelyben a kódunk fut. Vagyis egy aszinkron programban, amikor egy munkaegységet delegálunk egy másik szálra, rögzítjük az aktuális környezetet és tároljuk a SynchronizationContext és helyezze a Feladat objektumra.

Ha ezt szem előtt tartjuk, mire jó a ConfigureAwait?

Használata ConfigureAwait (hamis) a holtpontok elkerülése veszélyes gyakorlat. Muszáj lenne használja a ConfigureAwait programot (hamis) minden várakozás esetén a blokkoló kód által meghívott összes metódus tranzitív lezárásakor, beleértve az összes harmadik és második fél kódját is. Használata ConfigureAwait (hamis) a holtpont elkerülése legjobb esetben is csak egy hack).

Mi az a GetAwaiter?

GetAwaiter () metódus, amely egy GetResult() metódussal rendelkező példányt ad vissza. Ha egy hibás Task-on használjuk, a GetResult() az eredeti kivételt terjeszti (így viselkedik a „várakozik feladat;”). GetResult(), mert megőrzi a feladatkivételeket, ahelyett, hogy egy AggregateException-be csomagolja őket.