Mis on ConfigureAwait?
Mis on ConfigureAwait?

Video: Mis on ConfigureAwait?

Video: Mis on ConfigureAwait?
Video: Configuring Await 2024, Mai
Anonim

ConfigureAwait (vale) hõlmab ülesannet, mis on oodatu ajaks juba lõpetatud (mis on tegelikult väga levinud), siis ConfigureAwait (false) on mõttetu, kuna lõim jätkab koodi täitmist meetodis pärast seda ja ikka samas kontekstis, mis oli seal varem.

Seejärel võib ka küsida, milleks on ConfigureAwait false kasu?

ConfigureAwait ( vale ) konfigureerib ülesande nii, et jätkamist pärast ootamist ei pea käivitama helistaja kontekstis, vältides seega võimalikke ummikseisu.

Lisaks ülalolevale, mis on SynchronizationContext? Sünkroonimise kontekst on praeguse keskkonna esitus, milles meie kood töötab. See tähendab, et asünkroonses programmis, kui delegeerime tööühiku teisele lõimele, jäädvustame praeguse keskkonna ja salvestame selle eksemplari Sünkroonimise kontekst ja asetage see ülesande objektile.

Milleks on ConfigureAwaiti kasu, kui seda arvesse võtta?

Kasutades ConfigureAwait (vale) ummikseisude vältimine on ohtlik praktika. Sa peaksid kasutage ConfigureAwaiti (väär) kõigi blokeerimiskoodiga kutsutud meetodite, sealhulgas kolmanda ja teise osapoole koodide iga ooteaja transitiivse sulgemise korral. Kasutades ConfigureAwait (vale) ummikseisu vältimiseks on parimal juhul lihtsalt häkkimine).

Mis on GetAwaiter?

Hangi ootaja () meetod, mis tagastab eksemplari, millel on meetod GetResult(). Kui seda kasutatakse vigase ülesande puhul, levitab GetResult() algset erandit (nii käitub „wait task;” käitumine). GetResult(), kuna see säilitab ülesande erandid, selle asemel, et neid koondada koonderandisse.

Soovitan: