14-10-12, 05:22 PM
BackgroundWorker :
تستخدم ال BackgroundWorker لتنفيذ مهمة معينة تأخذ وقتاً طويلاً بعيداً عن المسار الاساسي للبرنامج ، من أمثلة ذلك الدوال الخاصة بالقراءة من web service أو عمليات معالجة الصور او جلب بعض البيانات من كومبيوتر آخر أو تنفيذ عملية بحث ، او اجراء مجموعة من العمليات طويلة الأمد .
ومع أنك كان بإمكانك عمل هذه الدوال عن طريق تنفيذها في thread تقليدي ، إلا أن BackgroundWorker تعطيك مزيد من التحكم ، ببساطة يمكنك اخباره ال بالدالة التي ترغب في تنفيذها ومن ثم تشغيلها عن طريق RunWorkerAsync() ، أخيراً بعد انتهاء التنفيذ يتم تنفيذ حدث RunWorkerCompleted والتي يمكنك فيه مثلاً عرض النتائج بعد انتهاء تنفيذ هذه المهمة .
للبدء بالعمل قم بعمل Windows Form ، قم برسم بعض الادوات ومن ثم ضع زر امر للبدء بتنفيذ المهمة ، واخيراً قم بسحب أداة BackgroundWorker بالشكل التالي مثلاً :
أهم دالتين هما هنا DoWork والذي يتم استدعاءه وقت بدء التنفيذ ، والحدث RunWorkerCompleted والذي يتم اطلاقه بعد الانتهاء من التنفيذ بالشكل التالي مثلاً :
C#:
vb.net :
لاحقاً يتم البدء بالتنفيذ بالشكل التالي :
حيث يتم تنفيذ الكود الموجود في الحدث DoWork .
والله الموفق ...
والسلام عليكم ورحمة الله وبركاته .
تستخدم ال 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)
{
}كود :
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);والله الموفق ...
والسلام عليكم ورحمة الله وبركاته .
