Co je ConfigureAwait?
Co je ConfigureAwait?

Video: Co je ConfigureAwait?

Video: Co je ConfigureAwait?
Video: How To Achieve Synchronization In C# While Doing Async Await Multithreaded Programming - .NET Core 2024, Smět
Anonim

ConfigureAwait (false) zahrnuje úkol, který je již dokončen v době, kdy se na něj čeká (což je ve skutečnosti neuvěřitelně běžné), pak ConfigureAwait (false) bude bezvýznamné, protože vlákno pokračuje ve spouštění kódu v metodě po tomto a stále ve stejném kontextu, který tam byl předtím.

Následně se lze také zeptat, k čemu je ConfigureAwait false?

ConfigureAwait ( Nepravdivé ) nakonfiguruje úlohu tak, aby se pokračování po čekání nemuselo spouštět v kontextu volajícího, čímž se zabrání případným uváznutím.

Kromě výše uvedeného, co je SynchronizationContext? Synchronizační kontext je reprezentace aktuálního prostředí, ve kterém běží náš kód. To znamená, že když v asynchronním programu delegujeme jednotku práce na jiné vlákno, zachytíme aktuální prostředí a uložíme ho do instance Synchronizační kontext a umístěte jej na objekt úkolu.

Když vezmeme v úvahu toto, jaké je použití ConfigureAwait?

Použitím ConfigureAwait (false) vyhnout se uváznutí je nebezpečná praxe. To byste musel použijte ConfigureAwait (false) za každé čekání na přechodné uzavření všech metod volaných blokovacím kódem, včetně všech kódů třetích a druhých stran. Použitím ConfigureAwait (false) vyhnout se uváznutí je v nejlepším případě jen hack).

Co je GetAwaiter?

GetAwaiter (), která vrací instanci, která má metodu GetResult(). Při použití na chybné úloze bude GetResult() šířit původní výjimku (takto se chová „čeká úloha; “). GetResult(), protože zachovává výjimky úlohy namísto jejich zabalení do AggregateException.