ارى كثيرا كلمتي Async , Await وخصوصا في UWP فما معناهما وما هي فوائدهما وكيف استخدمهما
ماهي استخدامات Asyn , Await
سأقرب لك الصورة بمثال من الواقع:
لنفرض لدى موظف مجموعة من الأعمال سينجزها ومن ضمنها أن عليه الذهاب للمطار لاستقبال إحدى الشخصيات القادمة لزيارة شركتهم، بحيث يستقبله ويؤمن له سيارة بسائق ليوصله للفندق ويذهب هو ليكمل مهامه.
ولكون ميعاد الطائرة معرض لظروف استثنائية قد تتطلب وقتا إضافيا، فطلب من الإدارة مسبقاً أن يفرغوا له زميل آخر.
عند وصوله للمطار تفاجأ أن الطائرة لم تصل بعد، وعندما سأل قالوا له أنهم لا يعملون متى تصل بالضبط لوجود ظروف غيرد دقة الموعد.
في هذه الحالة إن انتظر ولوقت غير معلوم قد يتأخر عن إكمال بقية مهامه على الوجه المطلوب وخصوصاً تلك المرتبطة بمواعيد محددة، فماذا يفعل ليخرج من هذا المأزق، في هذه الحالة يكلف زميله المفرغ ويطلب منه أن ينتظر إلى أن يصل الضيف بحيث يستقبله كما يجب ويكمل الزميل بقية الإجراءات مع الضيف.
ثم يذهب هو ليتابع بقية أعماله كما هو مقرر.
الآن الزميل الذي ينتظر الضيف هو await ولكي يتعرف عليها الكومبايلر يجب أن نبين أن الوظيفة الفلانية فيها حالة تتطلب الانتظار بحيث يتم ترتيبها داخليا على أنها معالجة متوازية، فعندما يتم طلبها فإنه ينفذ بشكل طبيعي إلى أن يصادف تعليمة await حينها يقف هنا منتظر رد الوظيفة التي تم طلبها بعد await والتي لا يعلم متى تعود النتيجة، فينتظر.
ويتابع البرنامج الرئيسي عمله بشكل طبيعي،
وعندما تعود النتيجة يتم تكملة العمليات التي تليه في نفس الوظيفة الموسومة ب async إلى أن ينتهي منها.
التعليقات