ConfigureAwait деген эмне?
ConfigureAwait деген эмне?

Video: ConfigureAwait деген эмне?

Video: ConfigureAwait деген эмне?
Video: How To Achieve Synchronization In C# While Doing Async Await Multithreaded Programming - .NET Core 2024, Май
Anonim

ConfigureAwait (жалган) күтүлгөн убакытка чейин аткарылган тапшырманы камтыйт (бул чындыгында укмуштуудай таралган), андан кийин ConfigureAwait (жалган) маанисиз болот, анткени жип андан кийин методдо кодду аткарууну улантат жана мурдагыдай эле контекстте.

Кийинчерээк, бирөө дагы сурашы мүмкүн, ConfigureAwait false дегендин эмне кереги бар?

ConfigureAwait ( жалган ) тапшырманы конфигурациялайт, ошентип күтүүдөн кийинки улантуу чалуучу контекстте аткарылышы керек эмес, ошондуктан мүмкүн болгон туюктан сактануу.

Жогорудагылардан тышкары, SynchronizationContext деген эмне? SynchronizationContext бул биздин кодубуз иштеп жаткан учурдагы чөйрөнүн көрүнүшү. Башкача айтканда, асинхрондук программада, биз жумуш бирдигин башка жипке өткөрүп бергенде, биз учурдагы чөйрөнү тартып алабыз жана аны бир нускада сактайбыз. SynchronizationContext жана аны Task объектине коюңуз.

Муну эске алып, ConfigureAwait эмнени колдонот?

Колдонуу ConfigureAwait (жалган) туюктан качуу коркунучтуу практика. Сиз керек болмок ConfigureAwait колдонуңуз (жалган) бөгөттөө коду тарабынан чакырылган бардык ыкмалардын, анын ичинде бардык үчүнчү жана экинчи тараптын коддору менен өтмө жабылышын күтүү үчүн. Колдонуу ConfigureAwait (жалган) туюктан качуу эң жакшысы жөн гана бузук).

GetAwaiter деген эмне?

GetAwaiter () методу, ал GetResult() ыкмасына ээ болгон инстанцияны кайтарат. Каталуу тапшырмада колдонулганда, GetResult() түпнуска өзгөчөлүктү жайылтат (ушундайча “күтүүчү тапшырма;” өзүнүн жүрүм-турумун алат). GetResult() анткени ал AggregateException га ороп коюунун ордуна тапшырманын өзгөчө учурларын сактайт.

Сунушталууда: