Vad är ConfigureAwait?
Vad är ConfigureAwait?

Video: Vad är ConfigureAwait?

Video: Vad är ConfigureAwait?
Video: How To Achieve Synchronization In C# While Doing Async Await Multithreaded Programming - .NET Core 2024, November
Anonim

ConfigureAwait (falskt) involverar en uppgift som redan är slutförd när den har väntat (vilket faktiskt är otroligt vanligt), då ConfigureAwait (false) kommer att vara meningslöst, eftersom tråden fortsätter att exekvera kod i metoden efter detta och fortfarande i samma sammanhang som var där tidigare.

Därefter kan man också fråga sig, vad är användningen av ConfigureAwait false?

ConfigureAwait ( falsk ) konfigurerar uppgiften så att fortsättning efter väntan inte behöver köras i anropssammanhang, och undviker därför eventuella dödlägen.

Förutom ovan, vad är SynchronizationContext? SynchronizationContext är en representation av den aktuella miljön som vår kod körs i. Det vill säga, i ett asynkront program, när vi delegerar en arbetsenhet till en annan tråd, fångar vi den aktuella miljön och lagrar den i en instans av SynchronizationContext och placera den på Task-objektet.

Med tanke på detta, vad är användningen av ConfigureAwait?

Använder sig av ConfigureAwait (falskt) att undvika dödlägen är en farlig praxis. Du skulle behöva använd ConfigureAwait (falskt) för varje väntan i den transitiva stängningen av alla metoder som anropas av blockeringskoden, inklusive alla tredje- och andrapartskoder. Använder sig av ConfigureAwait (falskt) för att undvika dödläge är i bästa fall bara ett hack).

Vad är GetAwaiter?

GetAwaiter ()-metod, som returnerar en instans som har en GetResult()-metod. När den används på en felaktig uppgift, kommer GetResult() att sprida det ursprungliga undantaget (detta är hur " await task; " får sitt beteende). GetResult() eftersom det bevarar uppgiftsundantagen istället för att linda in dem i en AggregateException.

Rekommenderad: