منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : طلب شرح لا ستخدام background worker لعمل thread و لتجنب Not responding
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
انا عملت مشروع  و الحمد الله اشتغل بس كان فيه مشكلة  not responding
فانا عاوز اعرف ازاى احلها عن طريق background worker
و ده مثال بسيط عاوز الاقى ليه حل

Imports System.Threading
Public Class Form1
Dim m As Integer = 0
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
10:
TextBox1.Text = m
m = m + 5
BackgroundWorker1.RunWorkerAsync()
GoTo 10

End Sub

Private Sub BackgroundWorker1_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Thread.Sleep(1000)
End Sub
End Class
سلام

كود :
Imports System.Threading

Public Class Form1

    Dim m As Integer = 0

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

    End Sub

    Private Delegate Sub Control()

    Private Sub BackgroundWorker1_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
        Do
            Dim Invoker As New Control(Sub()
                                           TextBox1.Text = m
                                       End Sub)
            TextBox1.Invoke(Invoker, Nothing)
            m = m + 5
            Thread.Sleep(1000)
        Loop
    End Sub

End Class

موفقين
(24-07-15, 06:33 PM)الطالب كتب : [ -> ]سلام

كود :
Imports System.Threading

Public Class Form1

   Dim m As Integer = 0

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

   End Sub

   Private Delegate Sub Control()

   Private Sub BackgroundWorker1_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
       Do
           Dim Invoker As New Control(Sub()
                                          TextBox1.Text = m
                                      End Sub)
           TextBox1.Invoke(Invoker, Nothing)
           m = m + 5
           Thread.Sleep(1000)
       Loop
   End Sub

End Class

موفقين

الف شكر .................الكود تمام