آشنایی با Async و Await در سی شارپ

خیلی وقت ها در طول مصاحبه ها از من سوال درباره Async و Await پرسیده شده است.
در اینجا من سعی می کنم درک خود را در مورد این کلمات کلیدی با چند قطعه تثبیت کنم.
برنامه نویسی ناهمزمان چیست؟:
در برنامه نویسی Asynchronous روش ها بدون مسدود کردن thread اصلی اجرا می شوند.
** همگام ** کلمه کلیدی: روشی را به عنوان ناهمزمان علامت گذاری می کند و امکان استفاده از await را می دهد.
**انتظار **کلید واژه: اجرا را تا زمانی که کار مورد انتظار تکمیل شود به حالت تعلیق در می آورد.
وظیفه و وظیفه: انواع هسته ای که عملیات ناهمزمان را نشان می دهند.
چرا از await در Methods استفاده کنیم؟
کلمه کلیدی await برای توقف اجرای متد فراخوانی استفاده می شود تا زمانی که عملیات ناهمزمان مورد انتظار تکمیل شود. این اجازه می دهد تا سایر وظایف (مانند به روز رسانی رابط کاربری یا سایر عملیات پس زمینه) بدون مسدود کردن رشته اجرا شوند.
زمان عدم استفاده منتظر می ماند
در برخی موارد، ممکن است نیازی به انتظار نباشد:
Fire-and-Forget: هنگامی که نتیجه یک کار مورد نیاز نیست، می توانید بدون انتظار آن را فراخوانی کنید.
LogDataAsync("Message"); // Fire-and-forget (but use cautiously)
جمعآوری وظایف چندگانه: میتوانید با استفاده از Task.WhenAll بدون اینکه منتظر هر کدام جداگانه باشید، کارها را ترکیب کنید.
var tasks = new[] { Task1(), Task2() };
await Task.WhenAll(tasks);
بازگرداندن وظایف: هنگامی که یک روش به سادگی یک وظیفه را به تماس گیرنده خود برمی گرداند، نیازی به انتظار ندارید مگر اینکه بخواهید موارد استثنا را مدیریت کنید یا کارهای اضافی انجام دهید.
static Task FetchDataAsync() => Task.FromResult("Data");