Ce este ConfigureAwait?
Ce este ConfigureAwait?

Video: Ce este ConfigureAwait?

Video: Ce este ConfigureAwait?
Video: Which do I use, ConfigureAwait True or False? 2024, Noiembrie
Anonim

Configurați așteptați (fals) implică o sarcină care este deja finalizată în momentul în care este așteptată (ceea ce este de fapt incredibil de comun), apoi Configurați așteptați (fals) va fi lipsit de sens, deoarece firul continuă să execute cod în metoda după aceasta și încă în același context care era acolo anterior.

Ulterior, se poate întreba, de asemenea, la ce folosește ConfigureAwait false?

Configurați așteptați ( fals ) configurează sarcina astfel încât continuarea după așteptare să nu fie rulată în contextul apelantului, evitând astfel eventualele blocaje.

Alături de mai sus, ce este SynchronizationContext? SynchronizationContext este o reprezentare a mediului curent în care rulează codul nostru. Adică, într-un program asincron, atunci când delegăm o unitate de lucru unui alt fir, capturăm mediul curent și îl stocăm într-o instanță de SynchronizationContext și plasați-l pe obiectul Sarcină.

Ținând cont de acest lucru, la ce folosește ConfigureAwait?

Folosind Configurați așteptați (fals) pentru a evita blocajele este o practică periculoasă. Ar trebui utilizați ConfigureAwait (fals) pentru fiecare așteptare în închiderea tranzitivă a tuturor metodelor apelate de codul de blocare, inclusiv toate codurile terțe și secundare. Folosind Configurați așteptați (fals) pentru a evita blocajul este în cel mai bun caz doar un hack).

Ce este GetAwaiter?

GetAwaiter (), care returnează o instanță care are o metodă GetResult(). Când este utilizat pe o sarcină greșită, GetResult() va propaga excepția inițială (așa se comportă „await task;”). GetResult() deoarece păstrează excepțiile sarcinii în loc să le încapsuleze într-o AggregateException.

Recomandat: