تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
backgroundworker stops
#1
سلام عليكم
بعد الصلاة على سيدنا محمد 

اريد كود لإيقاف 
backgroundworker 
الرد }}}
تم الشكر بواسطة:
#2
وعليكم السلام ورحمة الله وبركاته

عليه افضل صلاة وسلام على خاتم الانبياء سيدنا محمد صلى الله عليه وسلم

اما بعد بخصوص السؤالك
فاداء الـ Backgroundworker

هو عبارة عن تنفيذ للمرة واحدة
مثل Button بحيث انه يتوقف بعد تنفيذ الكود الذى بداخله
وليس كمثل الـ Timer الذى يتم تكرار العملية حتى اتمام الايقاف

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة: wared
#3
(22-06-19, 03:02 PM)e-coder كتب :
سلام عليكم
بعد الصلاة على سيدنا محمد 

اريد كود لإيقاف 
backgroundworker 

(لست مبرمج VB.NET)


لإيقافه قبل الانتهاء من مهمته عليك بتفعيل الخاصية WorkerSupportsCancellation الخاصة بأدة BackgroundWorker.

وفي زر الإيقاف نفذ الأمر CancelAsync الخاصة بأدة BackgroundWorker.

وفي حدث DoWork الخاصة بأدة BackgroundWorker،
وتحديدًا داخل الحلقة التكرارية افحص CancellationPending الخاصة بأدة BackgroundWorker للتأكد من طلب الإلغاء من أجل الخروج.


تعديل مع ترتيب الكود
كود :
Imports System.ComponentModel

Public Class Form1

   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Control.CheckForIllegalCrossThreadCalls = False
       BackgroundWorker1.WorkerSupportsCancellation = True
   End Sub

   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       If Not BackgroundWorker1.IsBusy Then BackgroundWorker1.RunWorkerAsync()
   End Sub

   Private Sub BackgroundWorker1_DoWork(sender As Object, e As DoWorkEventArgs) Handles BackgroundWorker1.DoWork
       Dim i As Byte
       Do While ListBox1.Items.Count > 0
           TextBox1.Text = ListBox1.Items(0)
           ListBox1.Items.RemoveAt(0)
           If i = 10 Then Threading.Thread.Sleep(6000) : i = 0
           i += 1

           If BackgroundWorker1.CancellationPending Then Return

           Threading.Thread.Sleep(100)
       Loop
       TextBox1.Clear()
   End Sub


   Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
       BackgroundWorker1.CancelAsync()
   End Sub

End Class
الرد }}}
تم الشكر بواسطة: elgokr , asemshahen5



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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم