Kaj je ConfigureAwait?
Kaj je ConfigureAwait?

Video: Kaj je ConfigureAwait?

Video: Kaj je ConfigureAwait?
Video: Indila - Dernière Danse (Clip Officiel) 2024, Maj
Anonim

ConfigureAwait (napačno) vključuje nalogo, ki je že dokončana do časa čakanja (kar je pravzaprav neverjetno pogosto), nato ConfigureAwait (false) bo nesmiselno, saj nit nadaljuje z izvajanjem kode v metodi po tem in še vedno v istem kontekstu, kot je bil prej.

Kasneje se lahko vprašamo tudi, kaj je uporaba ConfigureAwait false?

ConfigureAwait ( napačno ) konfigurira nalogo tako, da nadaljevanja po čakanju ni treba izvajati v kontekstu klicatelja, s čimer se izogne morebitnim zastojem.

Poleg zgoraj, kaj je SynchronizationContext? SynchronizationContext je predstavitev trenutnega okolja, v katerem se izvaja naša koda. To pomeni, da v asinhronem programu, ko delegiramo enoto dela drugi niti, zajamemo trenutno okolje in ga shranimo v primer SynchronizationContext in ga postavite na predmet Task.

Če to upoštevamo, kakšna je uporaba ConfigureAwait?

Uporaba ConfigureAwait (false) izogibanje zastojem je nevarna praksa. Moral bi uporabite ConfigureAwait (false) za vsako čakanje pri prehodnem zaprtju vseh metod, ki jih kliče koda za blokiranje, vključno z vso kodo tretjih in drugih oseb. Uporaba ConfigureAwait (false), da bi se izognili zastoju, je v najboljšem primeru le kramp).

Kaj je GetAwaiter?

GetAwaiter (), ki vrne primerek, ki ima metodo GetResult(). Ko se uporablja za okvarjeno opravilo, bo GetResult() razširil izvirno izjemo (tako dobi svoje vedenje »await task;«). GetResult(), ker ohranja izjeme opravil, namesto da bi jih ovijal v AggregateException.

Priporočena: