عرب ويب نت - منتدى شبكة الإنترنت العربية - Powered by vBulletin

 
موقع و منتدى شبكة الإنترنت العربية ArabWebNet.com

اكتب بريدك في المربع ثم اضغط على "اشتراك" لكي يصلك كل جديد على بريدك مباشرة


+ الرد على الموضوع
النتائج 1 إلى 3 من 3
كورس c# :درس12 (تعرف على أهم ال Controls...)

في درسنا اليوم سوف ندرس ال Multi-Threading (( المسارات المتعددة )) وهي مهمة جدا لأي برنامج يحوي على عمليات خارجية مثل القيام بفحص للفيروسات من قبل برنامج Anti-Virus أو جلب

  1. #1
    مشرف احمد is a jewel in the rough احمد is a jewel in the rough احمد is a jewel in the rough احمد is a jewel in the rough
    تاريخ التسجيل
    Aug 2010
    المشاركات
    468

    افتراضي كورس c# :درس12 (تعرف على أهم ال Controls...)


    Controls...) 25.png


    في درسنا اليوم سوف ندرس ال Multi-Threading (( المسارات المتعددة )) وهي مهمة جدا لأي برنامج يحوي على عمليات خارجية مثل القيام بفحص للفيروسات من قبل برنامج Anti-Virus أو جلب أسماء ملفات ما وما شابه ذلك...

    سوف نستخدم في هذا الدرس المجال



    لذلك قم من الان باستيراده

    تبيين فائدة ال Multi-Threading ...

    سوف أقوم بمقارنة مباشرة لذلك أولا سوف نستخدم برنامج لجلب أسماء الملفات بنفس الThread قم سوف نقوم ببرنامج اخر يقوم بنفس الوظيفة ولكن يستخدم Multi-Threading ...
    وسوف يقوم البرنامج بعد جلب أسماء الملفات بكتابتها في ملف نصي...

    البرنامج الأول: ( Single Threading ):

    قم بإنشاء مشروع WindowsFormsApplication جديد وضع به Button

    الكود البرنامج بعض وضع الأداة كاملا (( للإختصار )):
    System.Threading.Thread



    الرمز PHP:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    namespace WindowsFormsApplication20
    {
    public
    partial class Form1 : Form
    {
    public
    Form1()
    {
    InitializeComponent();
    }
    System.Collections.ArrayList myarr = new System.Collections.ArrayList();
    private
    void button1_Click(object sender, EventArgs e)
    {
    if (
    System.IO.Directory.Exists("c:\test") == false)
    {
    System.IO.Directory.CreateDirectory(@"c:\test");
    }
    foreach (
    string x in System.IO.Directory.GetFiles(@"c:\windows\system32"))
    {
    myarr.Add(x);
    }
    System.IO.StreamWriter myw = new System.IO.StreamWriter(@"c:\test\mytest.txt");
    foreach (
    string fx in myarr)
    {
    myw.WriteLine(fx);
    }
    myw.Close();
    }
    }
    }

    جرب البرنامج بالضغط على الButton ولاحظ... سوف يتوقف البرنامج عن العمل لمدة حوال 1 ثانية ثم يتم إضافة أسماء الملفات الموجودة في c:\windows\system32 إلى الملف...
    حسنا الان مع حوال 2000 ملف توقف البرنامج لمدة 1 ثانية ماذا لو كنا نود عمل فحص للكومبيوتر كاملا؟؟؟؟ سوف يتوقف البرنامج عن العمل لمدة قد تصل إلى 30 دقيقة أو أكثر (( الشيئ متعلق بسرعة الكومبيوتر وكمية الملفات ))
    (( ملاحظة إذا لم تلاحظ توقف الكومبيوتر فأعد التجربة في مكان يحوي على ملفات أكثر ))

    --- وهنا ومن أجل ذلك تم إختراع مبدأ ال multi-threading حيث أصبح بإمكانك عمل كل تحركاتك دون أي تأثير على أداء البرنامج لنأخذ مثال على نفس البرنامج مع ال multi-threading

    ضع أيضا نقس الأدوات السابقة (Listbox,Button) واكتب الكود التالي:

    الرمز PHP:

    using System
    ;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    namespace WindowsFormsApplication20
    {
    public
    partial class Form1 : Form
    {
    public
    Form1()
    {
    InitializeComponent();
    }
    System.Collections.ArrayList myarr = new System.Collections.ArrayList();
    private
    void button1_Click(object sender, EventArgs e)
    {
    System.Threading.Thread mythread = new System.Threading.Thread(dowork);
    mythread.Priority = System.Threading.ThreadPriority.Lowest;
    mythread.Start();
    }
    private
    void dowork()
    {
    if (
    System.IO.Directory.Exists("c:\test") == false)
    {
    System.IO.Directory.CreateDirectory(@"c:\test");
    }
    foreach (
    string x in System.IO.Directory.GetFiles(@"c:\windows\system32"))
    {
    myarr.Add(x);
    }
    System.IO.StreamWriter myw = new System.IO.StreamWriter(@"c:\test\mytest.txt");
    foreach (
    string fx in myarr)
    {
    myw.WriteLine(fx);
    }
    myw.Close();
    MessageBox.Show("Progress Completed!");
    }
    }
    }


    سوف تلاحظ عمل نفس الشيئ ولكن دون أي توقف أو بطئ للبرنامج مهما كان عدد الملفات...

    أهم ما في الفئة Thread ...

    1- Start وهي لبدأ ال Thread
    2-
    Suspend لإيقاف الThread مؤقتا...
    3- Abort لإيقاف ال Thread تهائيا...
    4- Resume لإكمال ال Thread
    5- IsBackGround ... جاء وقت شرحها...


    إن ال BackGround Thread تتشابه بحد كبير مع ال Thread العادي ولكن الفرق يكمن بينهما في ما يلي...

    أولا ضع Button وكتب في الحدث Click الخاص به:

    الرمز PHP:
    System.Threading.Thread.CurrentThread.Abort();

    سوف تلاحظ أن البرنامج توقف عن العمل ولكن لماذا؟؟؟؟

    السبب:
    لم يعد هناك أي Fore Thread حي ولذلك تم إغلاق البرنامج ...

    نتيجة...
    Controls...) 18.gif :إذا لم هناك أي Fore Thread قيد الإستخدام يغلق البرنامج...

    أما لو كان ال Thread الذي يعمل مع برنامجك بشكل إفتراضي مع BackGround Thread فلن تراه في عمرك
    Controls...) 18.gif

    فحتى لو كان هناك BackGround Thread حي و لا يوجد أي Fore Thread فسوف يغلق البرنامج دون أن يهتم بالباقي....

    أما العكس فليس صحيح..
    ...


    أرجو أن تكون قد إستفدت من هذا الدرس ولكن حديثنا عن ال Threads لم ينتهي بل سوف يكون هناك له بقية إن شاء الله للتجنب بالوقوع في أخطار هذه ال Thread لأن لها أخطار كبيرة على برنامجك... سوف تعرفها في ما يلي...


    Controls...)






    ;,vs c# :]vs12 (juvt ugn Hil hg Controls>>>) controls>>>)


  2. #2

  3. #3
    عضو محترف فراشة المنتدى has a spectacular aura about فراشة المنتدى has a spectacular aura about الصورة الرمزية فراشة المنتدى
    تاريخ التسجيل
    Jul 2010
    المشاركات
    1,223

    افتراضي


 

 

المواضيع المتشابهه

  1. مشاركات: 6
    آخر مشاركة: 27-03-2011, 09:16 PM
  2. كورس c# :درس10 (تعرف على أهم ال Controls...)
    بواسطة احمد في المنتدى برمجيات و لغات البرمجة
    مشاركات: 0
    آخر مشاركة: 26-09-2010, 01:22 PM
  3. حوض الكوثر ماذا تعرف عنه؟؟؟؟؟
    بواسطة ريتاج في المنتدى الشبكة الإسلامية
    مشاركات: 0
    آخر مشاركة: 13-07-2010, 03:50 AM
  4. هل تعرف ما هي بنت المطر؟!!
    بواسطة زهره الخليج في المنتدى شبكة العلوم الكونيه و الثقافات العامه
    مشاركات: 1
    آخر مشاركة: 21-04-2010, 08:47 AM
  5. تعرف علي الدنيا بحكمه فقط
    بواسطة اميره الشرق في المنتدى الخواطر و نبض المشاعر
    مشاركات: 1
    آخر مشاركة: 19-03-2010, 04:07 AM

الكلمات الدلالية لهذا الموضوع

مواقع النشر (المفضلة)

مواقع النشر (المفضلة)

ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك

 

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

 

 



الساعة الآن 08:09 PM