Videó: Mi az a ConfigureAwait?
2024 Szerző: Lynn Donovan | [email protected]. Utoljára módosítva: 2023-12-15 23:48
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.