في لغة البرمجة C#، يمكنك تأخير تنفيذ تعليمة معينة باستخدام الدالة Task.Delay
و async/await
. هذا الأمر يسمح لك بتعليق التنفيذ لفترة زمنية معينة دون تأثير على تنفيذ أي تعليمات أخرى في الوقت نفسه. لنقم بتوضيح كيف يمكن تحقيق ذلك باستخدام الشيفرة التالية:
csharpusing System;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
Console.WriteLine("بدأ التنفيذ");
// تأخير لمدة 5 ثوانٍ
await DelayExecutionAsync(5000);
Console.WriteLine("تم التأخير واستكمال التنفيذ");
// هنا يمكنك وضع التعليمات الأخرى التي تريد تنفيذها بعد التأخير
}
static async Task DelayExecutionAsync(int millisecondsDelay)
{
// استخدام Task.Delay لتأخير التنفيذ
await Task.Delay(millisecondsDelay);
}
}
في هذا المثال، يتم بداية التنفيذ باستخدام Console.WriteLine
لطباعة رسالة. ثم يتم استخدام DelayExecutionAsync
لتأخير التنفيذ لمدة 5 ثوانٍ باستخدام Task.Delay
. بعد انتهاء التأخير، يتم طباعة رسالة أخرى للدلالة على استكمال التنفيذ.
يرجى مراعاة أن الاستخدام الفعّال لهذه الطريقة يتطلب فهمًا جيدًا لمفهوم async/await
وكيفية التعامل مع الأساليب الخاصة بـ Task
.
المزيد من المعلومات
بالطبع، دعونا نوسع على الموضوع بمزيد من التفاصيل. في الشيفرة السابقة، تم استخدام الكلمة الرئيسية async
لتعليم البرنامج أن الدالة Main
تحتوي على عمليات غير متزامنة. ثم تم استخدام await
للانتظار حتى اكتمال تأخير التنفيذ.
هنا بعض المفاهيم الأساسية لفهم كيف يعمل الكود:
-
async/await
: تُستخدم هذه الكلمتين للتعامل مع العمليات الغير متزامنة بطريقة تجعل الكود يبدو كما لو كان متزامنًا. الكلمة الرئيسيةasync
تُستخدم لتحديد الدوال التي تحتوي علىawait
وتشير إلى أنها تحتوي على عمليات غير متزامنة. -
Task.Delay
: تُستخدم لتأخير تنفيذ الكود لعدد معين من الوحدات الزمنية. في هذا السياق، تم استخدامها لتأخير التنفيذ لمدة 5 ثوانٍ. -
Main
: هي الدالة التي يتم تنفيذها أولاً عند تشغيل البرنامج. باستخدامasync Task Main()،
يصبح بإمكاننا استخدامawait
في الدالة الرئيسية. -
DelayExecutionAsync
: هي الدالة التي تقوم بتنفيذTask.Delay
باستخدامawait
للتأكيد على أن التأخير لن يؤثر على تنفيذ أي تعليمات أخرى خلال هذه الفترة.
بهذه الطريقة، يتيح لك استخدام async/await
تنظيم التنفيذ بطريقة فعالة وتأخير تنفيذ الأكواد حسب الحاجة دون تأثير على تنفيذ الأكواد الأخرى. يمكنك استخدام هذا الأسلوب في مواقف مثل الانتظار لاستجابة من الشبكة، أو تأخير تنفيذ مهمة معينة في تطبيقك.