Šta je ConfigureAwait?
Šta je ConfigureAwait?

Video: Šta je ConfigureAwait?

Video: Šta je ConfigureAwait?
Video: Configuring Await 2024, Novembar
Anonim

ConfigureAwait (netačno) uključuje zadatak koji je već završen do trenutka kada se čeka (što je zapravo nevjerovatno uobičajeno), a zatim ConfigureAwait (false) će biti besmisleno, jer nit nastavlja da izvršava kod u metodi nakon ovoga i dalje u istom kontekstu koji je bio tamo ranije.

Nakon toga, može se zapitati i koja je upotreba ConfigureAwait false?

ConfigureAwait ( false ) konfigurira zadatak tako da se nastavak nakon čekanja ne mora izvoditi u kontekstu pozivatelja, čime se izbjegavaju moguće zastoje.

Pored gore navedenog, šta je SynchronizationContext? SynchronizationContext je reprezentacija trenutnog okruženja u kojem se naš kod izvodi. To jest, u asinhronom programu, kada delegiramo jedinicu rada drugoj niti, hvatamo trenutno okruženje i pohranjujemo ga u instancu SynchronizationContext i postavite ga na objekat Task.

Imajući ovo u vidu, koja je upotreba ConfigureAwait?

Koristeći ConfigureAwait (netačno) izbjegavanje zastoja je opasna praksa. Morao bi koristite ConfigureAwait (false) za svako čekanje u tranzitivnom zatvaranju svih metoda koje poziva kod za blokiranje, uključujući sav kod treće strane i kod druge strane. Koristeći ConfigureAwait (netačno) izbjegavanje zastoja je u najboljem slučaju samo hak.

Šta je GetAwaiter?

GetAwaiter () metoda, koja vraća instancu koja ima metodu GetResult(). Kada se koristi na zadatku s greškom, GetResult() će propagirati originalni izuzetak (ovako “await task;” dobija svoje ponašanje). GetResult() jer čuva izuzetke zadataka umjesto da ih omota u AggregateException.

Preporučuje se: