لماذا async؟
العمليات الطويلة (شبكة، ملفات، قواعد بيانات) تجمّد البرنامج إن نُفِّذت تزامنيًّا. async/await تحلّ ذلك.
Task
Task يمثّل عملية قد تنتهي لاحقًا:
async Task<string> FetchDataAsync()
{
await Task.Delay(2000); // محاكاة انتظار
return "البيانات جاهزة";
}
await
ينتظر اكتمال المهمّة دون حجب الخيط الرئيسي:
async Task RunAsync()
{
Console.WriteLine("بدء التحميل...");
string data = await FetchDataAsync();
Console.WriteLine(data);
}
Main غير متزامنة
static async Task Main()
{
await RunAsync();
}
تشغيل مهامّ متوازية
Task<string> t1 = FetchDataAsync();
Task<string> t2 = FetchDataAsync();
string[] results = await Task.WhenAll(t1, t2); // معًا
قواعد ذهبية
- الدالة
asyncيجب أن تعيدTaskأوTask<T>(أوvoidللأحداث فقط). - أضف لاحقة
Asyncلأسماء الدوال اصطلاحًا. - لا تستخدم
.Resultأو.Wait()(قد تسبّب تجمّدًا) — استخدمawait.
🎯 التالي: خلاصة مسار C#.