مشاركة عبر


تطبيقات ذات مؤشرات ترابط (C# و Visual Basic)

مع Visual Basicو C# ، يمكنك كتابة التطبيقات التي تنفذ مهام متعددة في نفس الوقت. المهام التي تحنتوي احتمال تعليق المهام الأخرى يمكنها التنفيذ على مؤشرات ترابط أخرى منفصلة في عملية تُعرف ب متعدد العمليات أو مؤشر الترابط الحرة .

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

ملاحظة

Visual Studio 2010 و .NET Framework 4 enhance دعم for متوازى programming بواسطة providing a جديد وقت التشغيل, جديد فئة مكتبة أنواع, و جديد تشخيص أدوات. لمزيد من المعلومات، راجع البرمجة المتوازية في .NET Framework.

بإستخدام مكوّن BackgroundWorker

الطريقة الأكثر وثوقية لإنشاء ذات مؤشرات ترابط التطبيق لإستخدام مكوّن BackgroundWorker. تدير الفئة مؤشر ترابط منفصل مخصص لمعالجة الأسلوب الذي تحدده. على سبيل المثال ، راجع الإرشادات التفصيلية: متعدد العمليات مع مكوّنات BackgroundWorker (C# و Visual Basic).

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

إعداد خلفيةالتشغيل

لإعداد عملية الخلفية قم بإضافة معالج الأحداث للحدث DoWork. يتصل العملية مستهلكًا الخاص بك في معالج الحدث هذا.

لبدء تشغيل، استدعي RunWorkerAsync. لتلقي إعلامات لتحديثات التقدم تصرف بالحدث ProgressChanged. لتلقي إعلام عند إتمام العملية, عالج الحدث RunWorkerCompleted.

الأساليب التي تعالج الأحداث ProgressChangedو RunWorkerCompletedيمكن الوصول إلى واجهة المستخدم للتطبيق, لأنه يتم تشغيل تلك الأحداث على مؤشر ترابط الذي يستدعي الأسلوب RunWorkerAsync. ومع ذلك، معالج الأحداث DoWorkلا يمكن له التعامل مع أية كائنات لواجهة المستخدم لأنه يتم تشغيلها على مؤشر ترابط الخلفية.

إنشاء ثم إستخدام عمليات جزئية

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

إنشاء مؤشر ترابط جديد عن طريق التصريح عن متحول من نوع Threadثم استدعاء مُنشئ توفير اسم الإجراء أو الأسلوب الذي تريد ينفذه على مؤشر ترابط جديد. التعليمة البرمجية التالية توفر مثال:

Dim newThread As New System.Threading.Thread(AddressOf AMethod)
System.Threading.Thread newThread =
    new System.Threading.Thread(AMethod);

بدء تشغيل "و" إيقاف عمليات جزئية

ليبدأ تنفيذ مؤشر ترابط جديد إستخدم أسلوب Start كما هو موضح في تعليمات برمجية التالية.

newThread.Start()
newThread.Start();

ليبدأ تنفيذ مؤشر ترابط جديد إستخدم أسلوب Abort كما هو موضح في تعليمات برمجية التالية.

newThread.Abort()
newThread.Abort();

بالإضافة إلى بدء وإيقاف عمليات جزئية ويمكن أيضًا إيقاف عمليات جزئية عن طريق استدعاء الأسلوب Sleepأو Suspend، سيرة ذاتية مؤشر ترابط المتوقفون مرحلياً عن طريق إستخدام الأسلوب Resume، و إتلاف مؤشر ترابط بإستخدام الأسلوب Abort

أساليب مؤشر الترابط

يعرض الجدول التالي بعض الطرق التي يمكنك إستخدامها إلى التحكم عمليات جزئية الفردية.

Method

Action

Start

تسبب مؤشر ترابط إلى بدء إلى تشغيل.

Sleep

إيقاف مؤقت مؤشر ترابط لوقت معين.

Suspend

إيقاف مؤقت بمؤشر ترابط عندما تصل إلى نقطة الأمان.

Abort

إيقاف لمؤشر الترابط عندما تصل إلى نقطة الأمان.

Resume

إعادة تشغيل مؤشر الترابط موقوف

Join

تسبب مؤشر ترابط حالي لانتظار مؤشر ترابط آخر للإنتهاء. في حالة إستخدام مع القيمة مهلة يقوم هذا الأسلوب بإرجاع Trueفي حالة انتهاء مؤشر الترابط في الوقت المخصص.

نقاط الآمن

معظم هذه الطرق self-explanatory ولكن قد يكون المفهوم نقاط الآمن جديدة لك. نقاط الآمن هي مواقع في التعليمات البرمجية حيث تكون آمنة للغة العامة وقت التشغيل للتنفيذ التلقائي تجميع البيانات المهملة ، عملية تحرير متغيرات غير المستخدمة reclaiming الذاكرة. الاتصال من أسلوب Abortأو Suspendلمؤشر الترابط , يقوم وقت تشغيل اللغة العامة بتحليل التعليمة البرمجية وبتحديد موقع الموقع المناسب لمؤشر الترابط لإيقاف تشغيل.

خصائص مؤشر الترابط

تتضمن عمليات جزئية أيضاً عدة الخصائص المفيدة كما هو موضح في الجدول التالي:

الخصائص

Value

IsAlive

يحتوي على القيمة Trueإذا كان مؤشر الترابط نشط.

IsBackground

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

Name

احصل أو عين اسم مؤشر الترابط. الأكثر إستخداماً لاكتشاف عمليات جزئية فردية عندما قمت بالتصحيح.

Priority

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

ApartmentState

حصول أو تعيين طراز مؤشر النموذج مؤشر الترابط المستخدم لمؤشر نموذج مؤشر الترابط معينة. تعتبر نماذج الترابط هامة عند استدعاء مؤشر ترابط تعليمات برمجية غير مُدارة.

ThreadState

تحتوي على قيمة تصف حالة أو حالات لمؤشر ترابط.

أولويات مؤشر ترابط

لكل مؤشر ترابط خاصية أولوية التي تحدد حجم شريحة معالج وقت تحتاج للتنفيذ. يخصص نظام تشغيل شرائح زمنية أطول لعمليات جزئية ذات الأولوية و شرائح زمنية أقصر لمؤشرات الترابط ذات الأفضلية المنخفضة . يتم إنشاء عمليات جزئية جديد مع القيمة Normal, ولكن يمكنك تغيير الخاصية Priorityإلى أي قيمة في قائمة التعداد ThreadPriority.

راجع ThreadPriorityللحصول على وصف تفصيلي المتنوعة مؤشر ترابط الأولويات.

المقدمة و عمليات جزئية الخلفية

يعمل مؤشر ترابط المقدمة بشكل غير محدود, بينما تتوقف مؤشر ترابط الخلفية كما تم إيقاف آخر مؤشر ترابط المقدمة. يمكنك إستخدام الخاصية IsBackground لتحديد أو تغيير حالة الخلفية مؤشر ترابط.

متعدد العمليات مع النماذج وعناصر التحكم

عندما يكون متعدد العمليات الأفضل لتشغيل الإجراءات والأساليب للفئة, يمكنك أيضاً إستخدامها مع النماذج وعناصر التحكم. إذا فعلت ذلك، تكون على علم بالنقاط التالية:

  • كلما أمكن، ينفذ الأساليب عنصر تحكم في مؤشر ترابط الذي تم إنشاؤه فقط. إذا كان يجب استدعاء أسلوب عنصر تحكم من مؤشر ترابط آخر, يجب عليك إستخدام Invokeلاستدعاء الأسلوب.

  • لا تستخدم عبارة SyncLock(Visual Basic) أو lock (C#) لقفل عمليات جزئية التعامل مع عناصر تحكم أو النماذج. لأن أساليب التحكم و النماذج أحياناً تعيد الاتصال لاستدعاء الإجراءات, يمكنك إنهاء حتى بدون قصد إنشاء حالة توقف تام — و هو موقف حيث ينتظر مؤشران ترابط بعضهما الاخر لتحرير تأمين مما يؤدي إلى توقف التطبيق.

راجع أيضًا:

المرجع

مؤشر ترابط تجمع (C# و Visual Basic)

Invoke

InvokeRequired

Thread

المبادئ

معلمات وقيم إرجاع الإجراءات متعددة مؤشرات الترابط (C# و Visual Basic)

موارد أخرى

multithreading في المكونات

كيفية: إنشاء مؤشر ترابط عن طريق إستخدام ‏‫#Visual C .NET