ConfigureAwait гэж юу вэ?
ConfigureAwait гэж юу вэ?

Видео: ConfigureAwait гэж юу вэ?

Видео: ConfigureAwait гэж юу вэ?
Видео: How To Achieve Synchronization In C# While Doing Async Await Multithreaded Programming - .NET Core 2024, May
Anonim

Хүлээлтийг тохируулах (худал) нь хүлээгдэж буй хугацаандаа аль хэдийн дууссан даалгаварыг агуулдаг (энэ нь үнэхээр гайхалтай нийтлэг зүйл), дараа нь Хүлээлтийг тохируулах (худал) нь утгагүй байх болно, учир нь хэлхээ нь үүний дараа аргын кодыг үргэлжлүүлэн ажиллуулж, өмнө нь байсан контекст хэвээр байна.

Дараа нь ConfigureAwait false нь юунд хэрэгтэй вэ гэж асууж магадгүй юм.

Хүлээлтийг тохируулах ( худлаа ) нь даалгаврыг тохируулсан бөгөөд ингэснээр хүлээлтийн дараа үргэлжлэлийг дуудагч контекстэд ажиллуулах шаардлагагүй тул болзошгүй түгжрэлээс зайлсхийдэг.

Дээрхээс гадна SynchronizationContext гэж юу вэ? Синхрончлолын контекст Энэ нь бидний код ажиллаж байгаа одоогийн орчны дүрслэл юм. Өөрөөр хэлбэл, асинхрон программ дээр бид ажлын нэгжийг өөр хэлхээнд шилжүүлэх үед бид одоогийн орчныг авч, жишээнд хадгалдаг. Синхрончлолын контекст мөн Task объект дээр байрлуул.

Үүнийг анхаарч үзэхэд ConfigureAwait нь юунд хэрэгтэй вэ?

Ашиглаж байна Хүлээлтийг тохируулах (худал) мухардалд орохгүй байх нь аюултай үйлдэл юм. Чи тэгэх ёстой байсан ConfigureAwait ашиглана уу (худал) блоклох кодоор дуудагдсан бүх аргууд, түүний дотор гуравдагч болон хоёрдогч этгээдийн кодууд шилжин хаагдахыг хүлээж байна. Ашиглаж байна Хүлээлтийг тохируулах (худал) мухардалд орохгүй байх нь зүгээр л хакердах явдал юм).

GetAwaiter гэж юу вэ?

GetAwaiter () арга бөгөөд энэ нь GetResult() аргатай жишээг буцаана. Алдаатай даалгавар дээр ашиглах үед GetResult() нь анхны үл хамаарах зүйлийг түгээх болно (" wait task; " нь ийм байдлаар өөрийн зан төлөвийг авдаг). GetResult() учир нь энэ нь AggregateException-д оруулахын оронд даалгаврын үл хамаарах зүйлсийг хадгалдаг.

Зөвлөмж болгож буй: