Što je ConfigureAwait?
Što je ConfigureAwait?

Video: Što je ConfigureAwait?

Video: Što je ConfigureAwait?
Video: Друзья встречаются вновь (1939) фильм 2024, Studeni
Anonim

ConfigureAwait (netočno) uključuje zadatak koji je već dovršen do trenutka kada se čeka (što je zapravo nevjerojatno uobičajeno), a zatim ConfigureAwait (false) bit će besmisleno, jer nit nastavlja izvršavati kod u metodi nakon ovoga i dalje u istom kontekstu koji je bio tamo prije.

Nakon toga, može se također zapitati, čemu služi ConfigureAwait false?

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

Osim gore navedenog, što je SynchronizationContext? SynchronizationContext je prikaz trenutnog okruženja u kojem se naš kod izvodi. To jest, u asinkronom programu, kada delegiramo jedinicu rada drugoj niti, hvatamo trenutno okruženje i pohranjujemo ga u instancu SynchronizationContext i postavite ga na objekt Task.

Imajući to u vidu, čemu služi ConfigureAwait?

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

Što je GetAwaiter?

GetAwaiter () koja vraća instancu koja ima metodu GetResult(). Kada se koristi na zadatku s greškom, GetResult() će propagirati izvornu iznimku (ovako “await task;” dobiva svoje ponašanje). GetResult() jer čuva iznimke zadatka umjesto da ih omota u AggregateException.

Preporučeni: