از پشت پرده API های async/await دات نت بیشتر بدانید + سوالات متداول ConfigureAwait
200, OK
https://devblogs.microsoft.com/dotnet/configureawait-faq/ icon
  • What is a SynchronizationContext?
  • What is a TaskScheduler?
  • How do SynchronizationContext and TaskScheduler relate to await?
  • What does ConfigureAwait(false) do?
  • Why would I want to use ConfigureAwait(false)?
  • Why would I want to use ConfigureAwait(true)?
  • When should I use ConfigureAwait(false)?
  • ...
از پشت پرده API های async/await دات نت بیشتر بدانید + سوالات متداول ConfigureAwait
کارکرد متد مهم ConfigureAwait
301, MovedPermanently
https://www.skylinetechnologies.com/Blog/Skyline-Blog/December_2018/async-await-configureawait icon

ConfigureAwait(true):

پس از اتمام wait ادامه کار توسط همان Thread اولیه انجام می‌شود. اگر Thread در اختیار درخواست دیگری باشد، تا اتمام آن باید صبر مضاعف کرد! امکان بروز Deadlock وجود دارد. در عوض Thread synchronization context از دست نمی‌رود. زمانی که متد Async در یک متد غیر Async فراخوانی گردد نیز امکان Deadlock وجود دارد. رفتار پیشفرض .Net Framework همین گونه است!

ConfigureAwait(false): 

پس از اتمام wait ادامه کار توسط یک Thread آزاد انجام می‌شود. که لزوما همان اولیه نیست، پس صبر اضافی لازم ندارد. از بروز Deadlock مربوط به این رفتار جلوگیری می‌شود. رفتار پیشفرض .Net Core این گونه است.

 
کارکرد متد مهم ConfigureAwait