الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

فنون تصميم الفورم - الدرس الثاني

مغلق
بدأه seahmad في 19 فبراير 2005 · 18 رد · 7,425 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

عنوان الدرس:         Multithreading تعدد العمليات

سنتعلم في هذا الدرس كيفية جعل الفورم يفتح بسرعة باستخدام تقنية تعدد العمليات

ماهو الفورم السريع؟ وما فائدته ؟

سأضرب لك مثالاًَ حتى تتضح الصورة

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

ومن خلال المثال التالي سنرى كيف نفتح نموذجين عليهما قائمتي تحرير وسرد يتم تعبئتها بالأرقام من 1 إلى 100000 ويتم فتح النموذج الثاني والثالث من خلال النموذج الأول وسنفتح النموذج الثاني بالطريقة العادية وسنفتح النموذج الثالث باستخدام تقنية تعدد المهام

الخطوات:

1- أنشئ مشروعاًَ جديداًَ وسمه Thread Form

2- أضف إلى المشروع نموذجين جديدن إضافة إلى النموذج الذي ينشئ تلقائياًَ

3- أدرج زرين (Bottons) على النموذج الأول

4- أدرج على النموذج الثاني قائمة تحرير وسرد (ComboBox)

5- أدرج على النموذج الثالث قائمة تحرير وسرد (ComboBox)

6- إذهب إلى النموذج الثاني وأنقر بزر الماوس الأيسر مرتين على الزر الأول Botton1 ثم أكتب التالي

 
        Dim SecForm As New Form2
        SecForm.ShowDialog()

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

7- أنقر بزر الماوس الأيسر مرتين على الزر الثاني Botton2 ثم أكتب التالي :

        Dim ThirdForm As New Form3
        ThirdForm.ShowDialog()

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

8- اكتب في حدث التحميل Load للنموذج الثاني التالي :

        Dim i As Int64 = 0
        Do While i < 100000
            Me.ComboBox1.Items.Add(i)
            i += 1
        Loop

هذا الكود يقوم بتعبئة قائمة التحرير والسرد بالأرقام من 1 إلى 100000

9- في النموذج الثالث إستورد في بداية المشروع هذا الفضاء Imports System.Threading

11- اكتب البروسيجر التالي والذي سنستدعيه باستخدام تقنية تعدد المهام (Thead) ووظيفته تعبئة قائمة التحرير والسرد الموجودة على الفورم الثالث:

     Private Sub FillComboBox1()
        Dim i As Int64 = 0
        Do While i < 100000
            Me.ComboBox1.Items.Add(i)
            i += 1
        Loop
    End Sub

10- عرف المتغير UseThreading من نوع Thread وحدد إسم الدالة FillComboBox1 كمرجع ، ضعه تحت جملة " Windows form designer generated code "

    Public UseThreading As New Thread(AddressOf FillComboBox1)

12- اكتب في حدث التحميل Load للنموذج الثالث التالي :

UseThreading.Start()

هذا السطر سيجعل تقنية تعدد المهام تطبق على البروسيجر FillComboBox1

13- أخيراًَ في حدث إغلاق النموذج الثالث Form3_Closing أكتب التالي:

        UseThreading.Abort()
        UseThreading.Join()

هذا الكود يقوم بإنهاء تعدد العمليات في حالة طلب المستخدم إغلاق النموذج قبل أن تنتهي.

شغل البرنامج (Run) وجرب فتح النموذج الثاني والثالث ستلاحظ أن النموذج الثاني استغرق تقريبا 10 ثواني أما النموذج الثالث سيفتح مباشرة بينما يتم ملئ الComboBox بالأرقام

وهذا المثال مرفق في الأسفل

SecondClass.zip

تم تعديل هذه المشاركة بواسطة seahmad في 19 فبراير 2005 في 22:00

فلسطين الزاهية بألوان الحب والسلام

ذلك الطعم الزيتوني الذي يتدفق عسلاً من أفواه بساتينها وحدائقها

تشتاق إليها نفوس المتقين وترنوا للسجود فيها جباه المسلمين

#2

ما شاء الله

أسلوب جميل فعلاً وبسيط ... هيا ... ننتظر المزيد من المفيد

:)

#3

مشكور أخي محمد النحراوي

لقد حاولت ألا أتوسع في هذا الموضوع حرصا على ألا يمل القارئ

ونظرا لعجلتي في كتابة الدرس قد يكون الشرح به بعض الغموض .. وأتمنى تنبيهي بذلك إن وجد

لكن أريد تفاعل أكثر من القراء وردود تشجعني على الإستمرار

تم تعديل هذه المشاركة بواسطة seahmad في 19 فبراير 2005 في 22:29

فلسطين الزاهية بألوان الحب والسلام

ذلك الطعم الزيتوني الذي يتدفق عسلاً من أفواه بساتينها وحدائقها

تشتاق إليها نفوس المتقين وترنوا للسجود فيها جباه المسلمين

#4

والله اسلوب فعلا جميل وحلوه اخي لك القدره على توصيل الفكره شكر لي اسلوبك الرائع

حذفت الصورة.

ممنوع وضع توقيعات تحتوي على صور فتيات.

(المشرف)

I'am

Princes When I Put My Feet AnyWhere I Will be appear like Bright Star (فانا سمو ألاميرة ):

#5

سلام عليكم

ما شاء الله خليك اخي seahmad اسلوب رائع وجميل وفكر راقي ،،،،

عساك على القوة ونطمع في المزيد ،، جاري التطبيق ، وشكرا لك :rolleyes:

" اللهم لاسهل إلا ماجعلته سهلاً وأنت تجعل الحزن إذا شئت سهلاً "

003.gif

قواعد طرح الأسئله والمشاركات

-------------------

MSN Messenger : nontop@gmail.com

Happy coding

-------------------

#6

درس رائع، وأتمنى عليك أن تتابع هذه الدروس ففيها فائدة كبيرة لنا جميعاً.

Learn Japanese :>>> http://www.nouben.com/

#7

شكرا لكم جميعا

تم تعديل هذه المشاركة بواسطة seahmad في 22 فبراير 2005 في 22:15

فلسطين الزاهية بألوان الحب والسلام

ذلك الطعم الزيتوني الذي يتدفق عسلاً من أفواه بساتينها وحدائقها

تشتاق إليها نفوس المتقين وترنوا للسجود فيها جباه المسلمين

#8

شكراً لك يا seahmed على هذا الدرس المفيد جداً.. ننتظر المزيد بإذن الله ان لم يكن عندك أية موانع.. ;)

هذا الأسلوب بالذات يفضل استخدامه مع التطبيقات التي تتصل مع قواعد البيانات الضخمة،و اللتي تأخذ وقتاً كثيراً في التحميل، أنصح بهذا الأسلوب في أي تطبيق يتصل بقاعدة بيانات سواءً كانت كبيرة أو صغيرة..

رأس الحكمة الإيمان بالله

#9

مشكور أخوي seahmad

وعساك دوم على القوة

أخوك أمير

Ameer

#10

شكرا للإخوة

HMS الخبير ، محمد عبد العليم المشرف ، ameersba ... وللجميع ..

وفعلا أشعر بأن هناك من يستفيد من دروسي المتواضعة ..

إن شاء الله الدرس القادم سيكون بعد يوم أو اثنين بعنوان " الفورم يحاورك!! "

تم تعديل هذه المشاركة بواسطة seahmad في 23 فبراير 2005 في 13:45

فلسطين الزاهية بألوان الحب والسلام

ذلك الطعم الزيتوني الذي يتدفق عسلاً من أفواه بساتينها وحدائقها

تشتاق إليها نفوس المتقين وترنوا للسجود فيها جباه المسلمين

#12

شكرًا لك أخي العزيز على هذه المعلومات القيمة

وبارك الله فيك وزادك علمًا

سبحان الله وبحمده ... سبحان الله العظيم

#13

اب

#14

السلام عليكم

فعلا الدرس رائع جدا جدا ولكن استعجب من أمر معين وهو حين يكون عندي على نوذج ثنين listbox وزرين لتعبة كل واحده منها 10000 رقم مثلا

الاول لو استخدمنا طريقة الثيرد والثاني بدون هذه الطريقه صحيح ان الثير يرى عمليا حين يعبأ لكن لحظت ان الطريقه العاديه تنهي وظيفتها اسرع فلماذا ياتري ؟؟

وحتى ولو، بصراحه الطريقه جذابه جدا للمستخدم ولو فيه برسنتج تحت كل وحده تحميل لكان الأمر اروع

شكرا لك واتمنى ان الله يمد بعمرك وعلمك وتستمر في تعليم هذه الدرر

#15

شكرا جزيلاً لك .

ممكن ان توضح أكثر عن الخطوة رقم 10 و12 بالنسبة إلى استخدام USE .

وشكرا مقدما

#16

السلام عليكم ورحمة الله وبركاته

بجد سلسلة الدروس ممتازة بالفعل

وجزاكم الله خيرا

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#17

السلام عليكم

شكرا يا اخى جزاكم الله خيرا وجعله الله فى ميزان حسناتك

#18

ممتاز ممتاز ,, ألله يعطيك ألف عافية :)

#19

أشكرك أخي الكريم على هذا الشرح الطيب

وأسأل الله أن ينفع بك الاسلام والمسلمين وأن يزيدك من علمه

هذا الموضوع مغلق.

مواضيع مشابهة