استخدام parallel for - makky - 16-05-22
كيف استخدم parallel for لتسريع الكود
كود :
Dim idx As Integer = DGVTest(6, DGVTest.SelectedRows(0).Index).Value.ToString
Dim dt As DataTable = New DAL().selectdatatable(String.Format("SELECT Test_Price, Test_No FROM Tests order by Tests.Test_No;"))
Dim d As New DAL
d.Dataedit(String.Format("delete from comprices where comid={0} ", idx))
For i As Integer = 0 To dt.Rows.Count - 1
d.Dataedit(String.Format("insert into comprices (TestPrice,Test_No,comid) values({0},{1},{2})", dt.Rows(i)(0), dt.Rows(i)(1), idx))
Next
RE: استخدام parallel for - DR.YASER - 16-05-22
(16-05-22, 01:28 AM)makky كتب : كيف استخدم parallel for لتسريع الكود
كود :
Dim idx As Integer = DGVTest(6, DGVTest.SelectedRows(0).Index).Value.ToString
Dim dt As DataTable = New DAL().selectdatatable(String.Format("SELECT Test_Price, Test_No FROM Tests order by Tests.Test_No;"))
Dim d As New DAL
d.Dataedit(String.Format("delete from comprices where comid={0} ", idx))
For i As Integer = 0 To dt.Rows.Count - 1
d.Dataedit(String.Format("insert into comprices (TestPrice,Test_No,comid) values({0},{1},{2})", dt.Rows(i)(0), dt.Rows(i)(1), idx))
Next
كود :
Imports System
Imports System.IO
Imports System.Threading
Imports System.Threading.Tasks
Public Class Example
Public Shared Sub Main(ByVal args As String())
Dim totalSize As Long = 0
If args.Length = 0 Then
Console.WriteLine("There are no command line arguments.")
Return
End If
If Not Directory.Exists(args(0)) Then
Console.WriteLine("The directory does not exist.")
Return
End If
Dim files As String() = Directory.GetFiles(args(0))
Parallel.[For](0, files.Length, Sub(index)
Dim fi As FileInfo = New FileInfo(files(index))
Dim size As Long = fi.Length
Interlocked.Add(totalSize, size)
End Sub)
Console.WriteLine("Directory '{0}':", args(0))
Console.WriteLine("{0:N0} files, {1:N0} bytes", files.Length, totalSize)
End Sub
End Class
المصدر : https://docs.microsoft.com/en-us/dotnet/standard/parallel-programming/how-to-write-a-simple-parallel-for-loop
RE: استخدام parallel for - makky - 17-05-22
معذرة انا مش قادر افهم الكود.ازاي استخدمه في event وايه المقصود ب sub(index)
RE: استخدام parallel for - makky - 17-05-22
قمت بتحويل الكود الي
كود :
Dim idx As Integer = DGVTest(6, DGVTest.SelectedRows(0).Index).Value.ToString
Dim dt As DataTable = New DAL().selectdatatable(String.Format("SELECT Test_Price, Test_No FROM Tests order by Tests.Test_No;"))
Dim d As New DAL
d.Dataedit(String.Format("delete from comprices where comid={0} ", idx))
Parallel.[For](0, dt.Rows.Count - 1, Sub(i)
d.Dataedit(String.Format("insert into comprices (TestPrice,Test_No,comid) values({0},{1},{2})", dt.Rows(i)(0), dt.Rows(i)(1), idx))
End Sub)
MessageBox.Show("تمت العمليه بنجاح", "تنبيه", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
ولكن تظهر الخطأ
Attempting to free an in-use RCW can cause corruption or data loss.
|