تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] كيفية تشغيل اكتر من Thread فى نفس الوقت ؟
#1
السلام عليكم

كيف تتحكم بعدد الثريدات مثلا 100 بنفس الثانية

يعنى انا احدد عدد العمليات مثلا 5 او 10 ويبدء العلميات كلها فى نفس الوقت
يعنى مثلا لو اخترت 5 يبقا يشتغل ال5 عمليات فى نفس الثانية وهكذا

للتوضيح اكتر

مثلا هذا الكود
كود :
mg = New Thread(AddressOf test) With {.IsBackground = True}
        mg.Start()

Sub test
list.add("new item to test")
end sub

لو مثلا عايز 3 عمليات يبقا المفروض اعمل كدا

كود :
mg1 = New Thread(AddressOf test) With {.IsBackground = True}
        mg1.Start()


mg2 = New Thread(AddressOf test) With {.IsBackground = True}
        mg2.Start()


mg3 = New Thread(AddressOf test) With {.IsBackground = True}
        mg3.Start()
طريقة مرهقة جدا ومتنفعش فى بعض الاوقات

مثلا لو عندى حلقة دوران فيها مثلا 100 الف

اكيد ف طريقة اسهل وافضل من كل ذلك

بتحديد عدد العمليات اتمنى المساعدة والتوضيح لطلبي هذا

مشكورين مقدما

الرد }}}
تم الشكر بواسطة:
#2
حاول تستخدم Task Class فيه روتين اسمه Task.Run
الرد }}}
تم الشكر بواسطة: الماجيك مسعد
#3
(27-04-17, 11:42 AM)silverlight كتب : حاول تستخدم Task Class فيه روتين اسمه  Task.Run

يعنى مينفعش تحكم بعدد الثريدات ؟
الرد }}}
تم الشكر بواسطة:
#4
ضعهم في مصفوفة
الرد }}}
تم الشكر بواسطة:
#5
(27-04-17, 11:52 AM)silverlight كتب : ضعهم في مصفوفة

طيب ممكن كود بسيط كمثال
الرد }}}
تم الشكر بواسطة:
#6
يا أخ مسعد

فيه شئ اسمه Action Deleagate وكل ما في الأمر انك محتاج تبني مصفوفة List of Action و تمرر لها الروتينات
ثم تقوم بعمل loop علي المصفوفة  و تنفذ كل روتين

و الأفضل لك تستخدم Task class فيه مميزات أفضل لتنفيذ ما تريده
و النت ملئ ب الامثلة
الرد }}}
تم الشكر بواسطة: الماجيك مسعد , Fantastico
#7
(27-04-17, 12:11 PM)silverlight كتب : يا أخ مسعد

فيه شئ اسمه Action Deleagate وكل ما في الأمر انك محتاج تبني مصفوفة List of Action و تمرر لها الروتينات
ثم تقوم بعمل loop علي المصفوفة  و تنفذ كل روتين

و الأفضل لك تستخدم Task class فيه مميزات أفضل لتنفيذ ما تريده
و النت ملئ ب الامثلة

اسف جدا لازعاجك

ولكن للاسف انا خبرتى قليلة

ولم اتعامل مع هذه الامور من قبل

ولكى افهم هحتاج مثال على كودى هذا عشان اقدر افهم

mg = New Thread(AddressOf test) With {.IsBackground = True}
mg.Start()

Sub test
list.add("new item to test")
end sub

لذا ساحاول البحث اكتر

وايضا انتظر مساعدة بعض الاعضاء
الرد }}}
تم الشكر بواسطة:
#8
PHP كود :
Private Sub Form1_Load(sender As ObjectAs EventArgsHandles MyBase.Load

        For Each f 
As Func(Of StringIn GetNames()
 
           MessageBox.Show(f())
 
       Next

        For Each a 
As Action In GetActions()
 
           a()
 
       Next
    End Sub

    Private Iterator 
Function GetNames() As IEnumerable(Of Func(Of String))

 
       Yield Function() "magic"
 
       Yield Function() "mostafa"
 
       Yield Function() "Adel"
 
       Yield AddressOf GetName

        Return
    End 
Function

 
   Private Function GetName() As String
        Return 
"any name"
 
   End Function

 
   Private Iterator Function GetActions() As IEnumerable(Of Action)
 
       Yield Sub()
 
                 MessageBox.Show("عمر")
 
             End Sub
        Yield Sub
()
 
                 MessageBox.Show("فريد")
 
             End Sub

        Yield Sub
()
 
                 MessageBox.Show("فاروق")
 
             End Sub

        Yield AddressOf create

        Return

    End 
Function

 
   Private Sub create()
 
       MessageBox.Show("انتهي")
 
   End Sub 

أو

PHP كود :
Public Class Form1

    Private names 
As New List(Of String)()

 
   Private Sub Form1_Load(sender As ObjectAs EventArgsHandles MyBase.Load

        Dim threads 
As List(Of Threading.Thread) = New List(Of Threading.Thread)()
 
       threads.Add(New Threading.Thread(AddressOf doActionWith {.IsBackground True})
 
       threads.Add(New Threading.Thread(AddressOf doActionWith {.IsBackground True})
 
       threads.Add(New Threading.Thread(AddressOf doActionWith {.IsBackground True})
 
       threads.Add(New Threading.Thread(AddressOf doActionWith {.IsBackground True})
 
       threads.Add(New Threading.Thread(AddressOf doActionWith {.IsBackground True})

 
       threads.Add(New Threading.Thread(Sub()
 
                                            names.Add("Test")
 
                                        End SubWith {.IsBackground True})

 
       threads.Add(New Threading.Thread(Sub()
 
                                            names.Add("Test")
 
                                        End SubWith {.IsBackground True})

 
       threads.ForEach(AddressOf StartThread)

 
   End Sub

    Private Sub StartThread
(As Threading.Thread)
 
       t.Start()
 
   End Sub

    Private Sub doAction
()
 
       names.Add("Test")
 
   End Sub

    Private Sub Add
(As String)
 
       ListBox1.Items.Add(s)
 
   End Sub

    Private Sub Button1_Click
(sender As ObjectAs EventArgsHandles Button1.Click
        
' إظهار النتائج
        names.ForEach(AddressOf Add)
    End Sub

End Class 
الرد }}}
تم الشكر بواسطة: الماجيك مسعد , الماجيك مسعد
#9
بارك الله فيك

طيب ايه رايك في
Parallel.For(0, ips_count - 1, New ParallelOptions With {.MaxDegreeOfParallelism = 61},
Sub(i)
الرد }}}
تم الشكر بواسطة:
#10
متهيألي الموضوع بقي واضح و سهل
الرد }}}
تم الشكر بواسطة: Fantastico , Fantastico , الماجيك مسعد


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  كيفية منع ظهور الأخطاء من إعدادات البيسيك mmaalmesry 2 846 29-08-25, 10:30 AM
آخر رد: mmaalmesry
  كيفية جلب أسماء الأعمدة بجدول من جداول sql heem1986 2 745 17-08-25, 09:15 PM
آخر رد: heem1986
  كيفية حفظ إعدادات البرنامج بحيث لا تتغير أحمد إبراهيم سعد 4 3,000 06-08-25, 06:34 PM
آخر رد: Taha Okla
  مساعدة في كيفية ترحيل البيانات من داتا قريدفيو إلى داتا قريدفيو في فيجوال بيسك ahmedfa71 13 2,213 09-07-25, 11:24 PM
آخر رد: أبو خالد الشكري
  [سؤال] منع الوصول أو تشغيل الريجيسترى dr.programming 4 398 12-06-25, 12:24 AM
آخر رد: أبو خالد الشكري
  [سؤال] تغيير الفورم الرئيسي عند تشغيل البرنامج في Visual Studio مع .NET 8؟ silverlord 2 648 09-03-25, 03:52 AM
آخر رد: silverlord
  مساعدة في كود الوقت fireswored1 3 335 19-01-25, 11:17 AM
آخر رد: fireswored1
  كيفية احتساب الفرق بين تاريخين بناء على عدد معين مصمم هاوي 2 548 15-01-25, 02:02 PM
آخر رد: مصمم هاوي
  كيفية التعامل مع inputbox في فيجوال ستوديو أسامة حسين 4 3,498 14-01-25, 02:04 AM
آخر رد: أبو خالد الشكري
  كيفية معرفة الجهاز رئيسي ام فرعي المتألق9 1 391 13-11-24, 06:41 PM
آخر رد: justforit

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


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