منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
استخدام parallel for - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : استخدام parallel for (/showthread.php?tid=41464)



استخدام 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.