a7m3dalbalawi

Untitled

Jan 4th, 2018
672
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VB.NET 4.08 KB | None | 0 0
  1.     Dim data As New ListBox() ' نقوم بتعريف متغير ليحتوي على البيانات المراد معالجتها (الخزانة)
  2.     Function check(url As String) As String
  3.         Dim Web As New Net.WebClient
  4.         Dim Page As String = Web.DownloadString(url)
  5.         IO.File.WriteAllText(Application.StartupPath & "\" & IO.Path.GetFileName(url), Page)
  6.     End Function
  7.     Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  8.         ' عند بدء تشغيل البرنامج ، فنحن في حدث Forms load
  9.         ' نقوم بقراءة بيانات الملف ووضعها بالخزانة - Put golds inside data variable
  10.         Dim urls() As String = IO.File.ReadAllLines("C:\xxxx\xxxxx\xxxxx\url.txt") ' نقرأ الملف بالمسار الفلاني
  11.         ' ننشيء حلقة تكرار بعدد اسطر البيانات urls
  12.         For i As Integer = 0 To urls.Length - 1
  13.             ' نقوم بوضع كل سطر داخل الخزانة
  14.             data.Items.Add(urls(i))
  15.         Next
  16.     End Sub
  17.     Sub Button1_click(sender As Object, e As EventArgs) Handles Button1.Click
  18.         ' هنا حدث الضغط على الزر فينشيء لنا عامل واحد يقوم بإنشاء مجموعة عمال
  19.         ' نقوم بتعريف متغير وهو العامل الواحد ونخبرة بان مركز عملة في Sub OneMan
  20.         Dim OneWorker As New Threading.Thread(AddressOf OneMan)
  21.         ' نعطي لهذا العامل الخاصية ان يشتغل في الخلفية والخفاء
  22.         OneWorker.IsBackground = True
  23.         ' نأمر العامل ببدء العمل
  24.         OneWorker.Start()
  25.     End Sub
  26.     Sub OneMan()
  27.         ' هنا نخبر العامل بان يقوم بصناعة عمال بالعدد المطلوب
  28.         For i As Integer = 1 To 20 ' لينشئ لنا على سبيل المثال 20 عاملاً
  29.             ' نقوم بتعريف متغير وهو متغير العمال المُنشئين ونخبرهم ان مجال عملهم فقط داخل في MultiMans
  30.             Dim MultiWorkers As New Threading.Thread(AddressOf MultiMans)
  31.             ' ايضا نعطي لهم الصلاحية بالعمل في الخفاء
  32.             MultiWorkers.IsBackground = True
  33.             ' ونعطي لهم الأمر بِبدء العمل ولكن !!
  34.             ' نخبر لكل عامل ان لديك رقم خاص بك وهو رقم الحلقة المنشيئ بها
  35.             MultiWorkers.Start(i)
  36.         Next
  37.     End Sub
  38.     Sub MultiMans(index As Integer)
  39.         ' الان لكل عامل بيئة عمل منفصلة عن الاخر ولكن لا احد منهم يعلم عدد الذهب داخل الخزانة
  40.         ' Data Length (items) inside data variable (listbox)
  41.         ' فنجعلهم يعملو بعدد لا نهائي ولكن يتم التحقق ان كان هناك المزيد من الذهب ام لا
  42.         Do
  43.             Try
  44.                 ' الان نخبره ان ياخذ صفيحة ذهب ( البيانات من الخزنة ) ويقوم بحذفها من الخزنة
  45.                 Dim url As New StringBuilder()
  46.                 ' نجعل كل عامل يذهب إلى الخزنة وياخذ صفيحة الذهب المرقمه برقم هويته وهو المرسل له من المصنع بالأعلى
  47.                 url.Append(data.Items(index))
  48.                 ' بعد ان اخذ الصفيحة إلى مجال عمله يجب ان يحذفها من الخزانه حتى يستطيع العمال غيره باخذ الذهب ايضا
  49.                 data.Items.RemoveAt(index)
  50.                 ' بعد ذلك يقوم بإرسال صفيحة الذهب الى المحل ليتم معالجتها
  51.                 check(url.ToString)
  52.             Catch
  53.                 ' قمنا بكتابة صائدة الاخطاء حيث يحدث خطأ ان لم يكن هناك صفائح بالخزانه فهنا يعني ان العامل انتهى عملة
  54.                 Exit Sub
  55.             End Try
  56.         Loop
  57.     End Sub
Advertisement
Add Comment
Please, Sign In to add comment