Kas yra ConfigureAwait?
Kas yra ConfigureAwait?

Video: Kas yra ConfigureAwait?

Video: Kas yra ConfigureAwait?
Video: How To Achieve Synchronization In C# While Doing Async Await Multithreaded Programming - .NET Core 2024, Gegužė
Anonim

ConfigureAwait (klaidinga) apima užduotį, kuri jau buvo atlikta tuo metu, kai jos laukiama (tai iš tikrųjų yra neįtikėtinai įprasta), tada ConfigureAwait (false) bus beprasmis, nes po to gija toliau vykdo kodą metodu ir vis dar tame pačiame kontekste, kuris buvo anksčiau.

Vėliau taip pat galima paklausti, kokia yra ConfigureAwait false nauda?

ConfigureAwait ( klaidinga ) sukonfigūruoja užduotį taip, kad tęsimas po laukimo neturėtų būti vykdomas skambinančiojo kontekste, todėl išvengiama bet kokių galimų aklaviečių.

Be to, kas yra sinchronizavimo kontekstas? Sinchronizavimo kontekstas yra dabartinės aplinkos, kurioje veikia mūsų kodas, atvaizdas. Tai yra, asinchroninėje programoje, kai perduodame darbo vienetą kitai gijai, užfiksuojame esamą aplinką ir išsaugome ją Sinchronizavimo kontekstas ir padėkite jį ant užduoties objekto.

Turint tai omenyje, kokia yra ConfigureAwait nauda?

Naudojant ConfigureAwait (klaidinga) išvengti aklavietės yra pavojinga praktika. Jūs turėtumėte naudokite ConfigureAwait (klaidinga) už kiekvieną laukimą pereinant visus metodus, kuriuos iškviečia blokavimo kodas, įskaitant visus trečiosios ir antrosios šalies kodus. Naudojant ConfigureAwait (klaidinga) norint išvengti aklavietės geriausiu atveju yra tik įsilaužimas).

Kas yra GetAwaiter?

GetAwaiter () metodas, kuris grąžina egzempliorių, turintį GetResult() metodą. Naudojant sugedusią užduotį, GetResult() paskleis pradinę išimtį (taip elgsis „laukti užduoties;“). GetResult(), nes ji išsaugo užduočių išimtis, o ne įtraukia jas į AggregateException.

Rekomenduojamas: