تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الدرس الثامن والأربعون - Multithreading
#8
BackgroundWorker :

تستخدم ال BackgroundWorker لتنفيذ مهمة معينة تأخذ وقتاً طويلاً بعيداً عن المسار الاساسي للبرنامج ، من أمثلة ذلك الدوال الخاصة بالقراءة من web service أو عمليات معالجة الصور او جلب بعض البيانات من كومبيوتر آخر أو تنفيذ عملية بحث ، او اجراء مجموعة من العمليات طويلة الأمد .

ومع أنك كان بإمكانك عمل هذه الدوال عن طريق تنفيذها في thread تقليدي ، إلا أن BackgroundWorker تعطيك مزيد من التحكم ، ببساطة يمكنك اخباره ال بالدالة التي ترغب في تنفيذها ومن ثم تشغيلها عن طريق RunWorkerAsync() ، أخيراً بعد انتهاء التنفيذ يتم تنفيذ حدث RunWorkerCompleted والتي يمكنك فيه مثلاً عرض النتائج بعد انتهاء تنفيذ هذه المهمة .

للبدء بالعمل قم بعمل Windows Form ، قم برسم بعض الادوات ومن ثم ضع زر امر للبدء بتنفيذ المهمة ، واخيراً قم بسحب أداة BackgroundWorker بالشكل التالي مثلاً :


أهم دالتين هما هنا DoWork والذي يتم استدعاءه وقت بدء التنفيذ ، والحدث RunWorkerCompleted والذي يتم اطلاقه بعد الانتهاء من التنفيذ بالشكل التالي مثلاً :

C#:

كود :
private void ProcessNumbersBackgroundWorker_DoWork(object sender,
DoWorkEventArgs e)
{
}
private void ProcessNumbersBackgroundWorker_RunWorkerCompleted(object sender,
RunWorkerCompletedEventArgs e)
{
}
vb.net :


كود :
Private Sub ProcessNumbersBackgroundWorker_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs)
End Sub
Private Sub ProcessNumbersBackgroundWorker_RunWorkerCompleted(ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs)
End Sub
لاحقاً يتم البدء بالتنفيذ بالشكل التالي :

كود :
ProcessNumbersBackgroundWorker.RunWorkerAsync(args);
حيث يتم تنفيذ الكود الموجود في الحدث DoWork .

والله الموفق ...
والسلام عليكم ورحمة الله وبركاته .
}}}
تم الشكر بواسطة:


الردود في هذا الموضوع
الدرس الثامن والأربعون - Multithreading - بواسطة Raggi Tech - 14-10-12, 05:22 PM


التنقل السريع :


يقوم بقرائة الموضوع: