تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
العمليات الفرعية
#1
كاتب الموضوع : DreamsDotNet

نحمده ونصلي على رسوله الكريم

هذا المقال تعقيب بسيط على موضوع الأخ Mohammed Asaad

يعتمد نظام التشغيل بصورة أساسية على العمليات الفرعية وهذا يفسر تنقل المستخدم بين البرامج في نفس الوقت فالحاسب لا يستطيع أن يقوم بأكثر من عملية في نفس الوقت.
يكون لكل عملية رقم وموقع في الذاكرة، ويكون لها أولوية ونستطيع رؤية العمليات وتغيير أولوياتها من هنا:





هذا ليس موضوعنا لكن للمعرفة.
إلى الآن اتضحت فكرة العمليات الفرعية، لكن ما هي العملية الفرعية في التطبيق.

الأمور تتضح بالمثال:

ابدأ مشروع جديد، أضف زرين وانتقل للكود، ثم في مجال الأسماء اكتب

كود :
[color=#3366ff][FONT=Times New Roman]Imports [/FONT][/color][color=black][FONT=Times New Roman]System.Threading[/FONT][/color]

واكتب هذا الإجراء لإظهار رسالة

كود :
[FONT=Times New Roman][color=blue]Private[/color] [color=blue]Sub[/color] msg()[/FONT]
[FONT=Times New Roman]MsgBox([color=#a31515]"[/color][/FONT][color=#a31515][FONT=Times New Roman]يمكنك[/FONT][/color][color=#a31515][FONT=Times New Roman]استخدام[/FONT][/color][color=#a31515][FONT=Times New Roman]النموذج[/FONT][/color][color=#a31515][FONT=Times New Roman]."[/FONT][/color][FONT=Times New Roman])[/FONT]
[FONT=Times New Roman][color=blue]End[/color] [color=blue]Sub[/color][/FONT]

وفي حدث ضغط الزر الأول


كود :
[FONT=Times New Roman][color=blue]Private[/color] [color=blue]Sub[/color] Button1_Click([color=blue]ByVal[/color] sender [color=blue]As[/color] System.Object, [color=blue]ByVal[/color] e [color=blue]As[/color] System.EventArgs) [color=blue]Handles[/color] Button1.Click[/FONT]
[FONT=Times New Roman]MsgBox([color=#a31515]"[/color][/FONT][color=#a31515][FONT=Times New Roman]لا[/FONT][/color][color=#a31515][FONT=Times New Roman]تستطيع[/FONT][/color][color=#a31515][FONT=Times New Roman]استخدام[/FONT][/color][color=#a31515][FONT=Times New Roman]النموذج[/FONT][/color][color=#a31515][FONT=Times New Roman]إلا[/FONT][/color][color=#a31515][FONT=Times New Roman]بعد[/FONT][/color][color=#a31515][FONT=Times New Roman]إغلاقي[/FONT][/color][color=#a31515][FONT=Times New Roman]!"[/FONT][/color][FONT=Times New Roman])[/FONT]

[FONT=Times New Roman][color=blue]End[/color] [color=blue]Sub[/color][/FONT]

والزر الثاني



كود :
[FONT=Times New Roman][color=blue]Private[/color] [color=blue]Sub[/color] Button2_Click([color=blue]ByVal[/color] sender [color=blue]As[/color] System.Object, [color=blue]ByVal[/color] e [color=blue]As[/color] System.EventArgs) [color=blue]Handles[/color] Button2.Click[/FONT]
[FONT=Times New Roman][color=blue]Dim[/color] tP [color=blue]As[/color] Thread = [color=blue]New[/color] Thread([color=blue]AddressOf[/color] msg)[/FONT]
[FONT=Times New Roman]tP.Start()[/FONT]
[FONT=Times New Roman][color=blue]End[/color] [color=blue]Sub[/color][/FONT]

الآن شغل التطبيق واضغط على الزر الأول هل تستطيع التنقل بين الرسالة والنموذج
طبعاً لا.
جرب الزر الثاني.
ماذا ترى، نعم ليس هذا وحسب، جرب إغلاق النافذة الرئيسية للنموذج ستبقى الرسالة ظاهرة
لماذا؟ لأن كل واحد منهما عملية مستقلة.

يمكنك إسناد القيمة True إلى خاصية العملية الفرعية IsBackground حتى يتم إغلاق العملية الفرعية مع النموذج
عدل الكود للزر الأول ليصبح

كود :
[FONT=Times New Roman][color=blue]Private[/color] [color=blue]Sub[/color] Button1_Click([color=blue]ByVal[/color] sender [color=blue]As[/color] System.Object, [color=blue]ByVal[/color] e [color=blue]As[/color] System.EventArgs) [color=blue]Handles[/color] Button1.Click[/FONT]
[FONT=Times New Roman][color=blue]Dim[/color] tP [color=blue]As[/color] Thread = [color=blue]New[/color] Thread([color=blue]AddressOf[/color] msg)[/FONT]
[FONT=Times New Roman]tP.IsBackground = [color=blue]True[/color][/FONT]
[FONT=Times New Roman]tP.Start()[/FONT]
[FONT=Times New Roman][color=blue]End[/color] [color=blue]Sub[/color][/FONT]

جرب تنفيذ التطبيق.
حسناً, ما الفائدة من هذا الأمر في تطبيقي؟

لو كان التطبيق يحمل بيانات كثيرة في حدث التحميل لن يظهر النموذج إلى بعد أن يقوم بتحميلها جميعاً، ولو صنعت تطبيق لضغط الملفات مثلاً سيكون على المستخدم الانتظار حتى تتم تلك العملية، لا مشكلة نقوم بكتابة Application.DoEvents()، نعم هذا حل لكن هذا الأمر يشكل عبأً على التطبيق ويساهم في تبطيء أداء العملية.
هنا تكمن أهمية العمليات الفرعية.

وسائل العمليات الفرعية شرحها الخ الفاضل.
أما الخصائص:
Highest أولوية عالية
AboveNormal فوق العادي
Normal عادي
BelowNormalأقل من العادي
Lowestالأقل
IsBackgroundتم شرحها

بقي أن انوه أن العملية الفرعية يجب أن تكون خالية من الوسيطات، فلا يجب أن تكون العملية الفرعية بهذا الشكل

كود :
[color=blue][FONT=Times New Roman]Dim[/FONT][/color][FONT=Times New Roman] tP [color=blue]As[/color] Thread = [color=blue]New[/color] Thread([color=blue]AddressOf[/color] msg([color=#a31515]"Test"[/color]))[/FONT]

هذا ليس كل شيء عن العمليات الفرعية ما زال الكثير.
الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  الجزء الثالث من:كيف تجعل الـ Text Box ذكي!يترجم العمليات الحسابية ويخرج الناتج (الأقواس المتعددة) !! أنس محمود 9 2,079 06-12-14, 10:11 PM
آخر رد: RFEE3 ALSHAN
  @@@ معالجة العمليات الحسابية من خلال مربع نص وإظهار النتيجة @@@ @@أبورائد@@ 9 1,594 25-05-13, 01:07 PM
آخر رد: shaker.soft
  الجزء الثاني من:كيف تجعل الـ Text Box ذكي!يترجم العمليات الحسابية ويخرج الناتج ( العمليات المتعددة)! أنس محمود 0 689 22-02-13, 12:39 AM
آخر رد: أنس محمود
  كيف تجعل الـ Text Box ذكي !! يترجم العمليات الحسابية ويخرج الناتج !! بالداخل المزيد !! أنس محمود 0 1,556 20-02-13, 12:58 AM
آخر رد: أنس محمود
  فصل العمليات الحسابية من النوع String، ( الجزء الثالث - عمليات الأقواس ) RaggiTech 0 525 04-10-12, 01:41 PM
آخر رد: RaggiTech
  فصل العمليات الحسابية ، واخراج الناتج ... الكثير . RaggiTech 0 484 04-10-12, 01:37 PM
آخر رد: RaggiTech
  فصل العمليات الحسابية من النوع String، ( الجزء الثاني - العمليات المتعددة ) RaggiTech 0 509 04-10-12, 01:27 PM
آخر رد: RaggiTech
  تطبيق العمليات الحسابية بمرونة (فقط تكتب معادلتك) DynamicCalculate RaggiTech 1 465 03-10-12, 08:55 AM
آخر رد: RaggiTech
  تطبيق العمليات الحسابية بمرونة (Real Dynamic Calculate) -مـا بعد التطوير- RaggiTech 0 210 03-10-12, 08:53 AM
آخر رد: RaggiTech
  تحديد زمن تنفيذ العمليات باستخدام الفئة TimeSpan RaggiTech 0 366 03-10-12, 07:39 AM
آخر رد: RaggiTech

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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم