تطبيقات ذات مؤشرات ترابط (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 |
---|---|
تسبب مؤشر ترابط إلى بدء إلى تشغيل. |
|
إيقاف مؤقت مؤشر ترابط لوقت معين. |
|
إيقاف مؤقت بمؤشر ترابط عندما تصل إلى نقطة الأمان. |
|
إيقاف لمؤشر الترابط عندما تصل إلى نقطة الأمان. |
|
إعادة تشغيل مؤشر الترابط موقوف |
|
تسبب مؤشر ترابط حالي لانتظار مؤشر ترابط آخر للإنتهاء. في حالة إستخدام مع القيمة مهلة يقوم هذا الأسلوب بإرجاع Trueفي حالة انتهاء مؤشر الترابط في الوقت المخصص. |
نقاط الآمن
معظم هذه الطرق self-explanatory ولكن قد يكون المفهوم نقاط الآمن جديدة لك. نقاط الآمن هي مواقع في التعليمات البرمجية حيث تكون آمنة للغة العامة وقت التشغيل للتنفيذ التلقائي تجميع البيانات المهملة ، عملية تحرير متغيرات غير المستخدمة reclaiming الذاكرة. الاتصال من أسلوب Abortأو Suspendلمؤشر الترابط , يقوم وقت تشغيل اللغة العامة بتحليل التعليمة البرمجية وبتحديد موقع الموقع المناسب لمؤشر الترابط لإيقاف تشغيل.
خصائص مؤشر الترابط
تتضمن عمليات جزئية أيضاً عدة الخصائص المفيدة كما هو موضح في الجدول التالي:
الخصائص |
Value |
---|---|
يحتوي على القيمة Trueإذا كان مؤشر الترابط نشط. |
|
يحصل أو يعيين قيمة منطقية تشير إلى إذا كان مؤشر ترابط أو يجب أن يكون مؤشر ترابط الخلفية. عمليات جزئية الخلفية مثل عمليات جزئية المقدمة ولكن لا يمنع مؤشر ترابط خلفية عملية من إيقاف تشغيل. بمجرد إيقاف كافة مؤشرات الترابط المقدمة التي تنتمي إلى عملية, ينهي وقت تشغيل اللغة العامة العملية عن طريق استدعاء الأسلوب Abort على مؤشرات ترابط الخلفية التي تظل خلالها. |
|
احصل أو عين اسم مؤشر الترابط. الأكثر إستخداماً لاكتشاف عمليات جزئية فردية عندما قمت بالتصحيح. |
|
الحصول على أو تعيين القيمة التي تستخدمها في نظام التشغيل لترتيب جدولة مسار التنفيذ. |
|
حصول أو تعيين طراز مؤشر النموذج مؤشر الترابط المستخدم لمؤشر نموذج مؤشر الترابط معينة. تعتبر نماذج الترابط هامة عند استدعاء مؤشر ترابط تعليمات برمجية غير مُدارة. |
|
تحتوي على قيمة تصف حالة أو حالات لمؤشر ترابط. |
أولويات مؤشر ترابط
لكل مؤشر ترابط خاصية أولوية التي تحدد حجم شريحة معالج وقت تحتاج للتنفيذ. يخصص نظام تشغيل شرائح زمنية أطول لعمليات جزئية ذات الأولوية و شرائح زمنية أقصر لمؤشرات الترابط ذات الأفضلية المنخفضة . يتم إنشاء عمليات جزئية جديد مع القيمة Normal, ولكن يمكنك تغيير الخاصية Priorityإلى أي قيمة في قائمة التعداد ThreadPriority.
راجع ThreadPriorityللحصول على وصف تفصيلي المتنوعة مؤشر ترابط الأولويات.
المقدمة و عمليات جزئية الخلفية
يعمل مؤشر ترابط المقدمة بشكل غير محدود, بينما تتوقف مؤشر ترابط الخلفية كما تم إيقاف آخر مؤشر ترابط المقدمة. يمكنك إستخدام الخاصية IsBackground لتحديد أو تغيير حالة الخلفية مؤشر ترابط.
متعدد العمليات مع النماذج وعناصر التحكم
عندما يكون متعدد العمليات الأفضل لتشغيل الإجراءات والأساليب للفئة, يمكنك أيضاً إستخدامها مع النماذج وعناصر التحكم. إذا فعلت ذلك، تكون على علم بالنقاط التالية:
كلما أمكن، ينفذ الأساليب عنصر تحكم في مؤشر ترابط الذي تم إنشاؤه فقط. إذا كان يجب استدعاء أسلوب عنصر تحكم من مؤشر ترابط آخر, يجب عليك إستخدام Invokeلاستدعاء الأسلوب.
لا تستخدم عبارة SyncLock(Visual Basic) أو lock (C#) لقفل عمليات جزئية التعامل مع عناصر تحكم أو النماذج. لأن أساليب التحكم و النماذج أحياناً تعيد الاتصال لاستدعاء الإجراءات, يمكنك إنهاء حتى بدون قصد إنشاء حالة توقف تام — و هو موقف حيث ينتظر مؤشران ترابط بعضهما الاخر لتحرير تأمين مما يؤدي إلى توقف التطبيق.
راجع أيضًا:
المرجع
مؤشر ترابط تجمع (C# و Visual Basic)
المبادئ
معلمات وقيم إرجاع الإجراءات متعددة مؤشرات الترابط (C# و Visual Basic)