تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مشكلة break state
#2
قم بإجراء العملية في Thread مختلف عن الـ Thread الخاص بواجهة البرنامج :
بما أنك في هذا الإجراء لا تتعامل مع أي كنترول في واجهة البرنامج, من الآمن عمل هذا الإحراء في Thread مختلف.
في أثناء عمل الإجراء لن تتجمد واجهة البرنامج ويمكنك عمل أي شيء في البرنامج بينما الـ Thread يقوم بالعمل في الخلفية.

إذا كنت تستخدم 4.0 NET Framework.  وأعلى أنصحك بإستخدام Task بدلاً من الـ Thread 
   

بإستخدام الـ Thread 
كود :
Public Sub Reset()
   Dim ResetThread As New Threading.Thread(Sub()
                                               For i As Integer = 0 To DGridItems.Rows.Count - 1
                                                   Dim dt As New DataTable
                                                   Dim Adapter As New SqlDataAdapter
                                                   dt.Clear()
                                                   Adapter = New SqlDataAdapter("select * from Items where ItemID = " & DGridItems(0, i).Value & "", sqlcon)
                                                   Adapter.Fill(dt) '  
                                                   Dim c As Boolean
                                                   c = DGridItems.Rows(i).Cells(8).Value
                                                   If c = True Then
                                                       If dt.Rows.Count > 0 Then
                                                           dt.Rows(0).Item("ItemLargePrice") = 0
                                                           dt.Rows(0).Item("ItemLargeBuyPrice") = 0
                                                           dt.Rows(0).Item("ItemQtyLarge") = 0
                                                           dt.Rows(0).Item("ItemQtyMeduim") = 0
                                                           dt.Rows(0).Item("ItemMeduimPrice") = 0
                                                           dt.Rows(0).Item("ItemMeduimBuyPrice") = 0
                                                           Dim save As New SqlCommandBuilder(Adapter)
                                                           Adapter.Update(dt)
                                                           dt.AcceptChanges()
                                                       End If

                                                   End If
                                               Next
                                           End Sub)

   ResetThread.Start()
End Sub
بإستخدام الـ Task
كود :
   Public Sub Reset()
       Dim ResetTask As New System.Threading.Tasks.Task(Sub()
                                                            For i As Integer = 0 To DGridItems.Rows.Count - 1
                                                                Dim dt As New DataTable
                                                                Dim Adapter As New SqlDataAdapter
                                                                dt.Clear()
                                                                Adapter = New SqlDataAdapter("select * from Items where ItemID = " & DGridItems(0, i).Value & "", sqlcon)
                                                                Adapter.Fill(dt) '  
                                                                Dim c As Boolean
                                                                c = DGridItems.Rows(i).Cells(8).Value
                                                                If c = True Then
                                                                    If dt.Rows.Count > 0 Then
                                                                        dt.Rows(0).Item("ItemLargePrice") = 0
                                                                        dt.Rows(0).Item("ItemLargeBuyPrice") = 0
                                                                        dt.Rows(0).Item("ItemQtyLarge") = 0
                                                                        dt.Rows(0).Item("ItemQtyMeduim") = 0
                                                                        dt.Rows(0).Item("ItemMeduimPrice") = 0
                                                                        dt.Rows(0).Item("ItemMeduimBuyPrice") = 0
                                                                        Dim save As New SqlCommandBuilder(Adapter)
                                                                        Adapter.Update(dt)
                                                                        dt.AcceptChanges()
                                                                    End If

                                                                End If
                                                            Next
                                                            MsgBox("تم الإنتهاء من العمل")
                                                        End Sub)

       ResetTask.Start()
   End Sub
الرد }}}
تم الشكر بواسطة: mohamedassim


الردود في هذا الموضوع
مشكلة break state - بواسطة mohamedassim - 02-10-22, 12:35 AM
RE: مشكلة break state - بواسطة عبدالله الدوسري - 03-10-22, 09:39 PM


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


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