![]() |
|
العمليات الفرعية - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم مقالات VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=184) +--- الموضوع : العمليات الفرعية (/showthread.php?tid=4894) |
العمليات الفرعية - RaggiTech - 02-10-12 كاتب الموضوع : 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][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]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]طبعاً لا. جرب الزر الثاني. ماذا ترى، نعم ليس هذا وحسب، جرب إغلاق النافذة الرئيسية للنموذج ستبقى الرسالة ظاهرة لماذا؟ لأن كل واحد منهما عملية مستقلة. يمكنك إسناد القيمة 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]حسناً, ما الفائدة من هذا الأمر في تطبيقي؟ لو كان التطبيق يحمل بيانات كثيرة في حدث التحميل لن يظهر النموذج إلى بعد أن يقوم بتحميلها جميعاً، ولو صنعت تطبيق لضغط الملفات مثلاً سيكون على المستخدم الانتظار حتى تتم تلك العملية، لا مشكلة نقوم بكتابة 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]هذا ليس كل شيء عن العمليات الفرعية ما زال الكثير. |