03-10-22, 09:39 PM
قم بإجراء العملية في Thread مختلف عن الـ Thread الخاص بواجهة البرنامج :
بما أنك في هذا الإجراء لا تتعامل مع أي كنترول في واجهة البرنامج, من الآمن عمل هذا الإحراء في Thread مختلف.
في أثناء عمل الإجراء لن تتجمد واجهة البرنامج ويمكنك عمل أي شيء في البرنامج بينما الـ Thread يقوم بالعمل في الخلفية.
إذا كنت تستخدم 4.0 NET Framework. وأعلى أنصحك بإستخدام Task بدلاً من الـ Thread
بإستخدام الـ Thread
بإستخدام الـ Task
بما أنك في هذا الإجراء لا تتعامل مع أي كنترول في واجهة البرنامج, من الآمن عمل هذا الإحراء في 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كود :
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