يتم الآن الإيقاف المؤقت و الاستئناف عمليات جزئية

The most عام ways إلى يزامن the activities of عمليات جزئية are إلى حظر و يطرح المنتج عمليات جزئية, أو إلى قفل الكائنات أو regions of تعليمات برمجية. For المزيد معلومات تشغيل these locking و blocking mechanisms, see نظرة عامة حول الأوليات المزامنة.

You can also have عمليات جزئية put themselves إلى سكون. When عمليات جزئية are blocked أو sleeping, you can استخدم a ThreadInterruptedException إلى فاصل them خارج of their wait states.

The مؤشر ترابط.سكون أسلوب

Calling the Thread.Sleep أسلوب causes the الحالي مؤشر ترابط إلى immediately حظر for the رقم of ملى ثوان you pass إلى Thread.Sleep, yielding the remainder of its الوقت slice إلى another مؤشر ترابط. واحد مؤشر ترابط cannot يتصل Thread.Sleep تشغيل another مؤشر ترابط.

Calling Thread.Sleep مع Timeout.Infinite causes a مؤشر ترابط إلى سكون until it هو interrupted بواسطة another مؤشر ترابط that calls Thread.Interrupt, أو until it هو منتهي بواسطة Thread.Abort.

Interrupting عمليات جزئية

You can مقاطعة a جارى الإنتظار مؤشر ترابط بواسطة calling Thread.Interrupt تشغيل the blocked مؤشر ترابط إلى رمى a ThreadInterruptedException, which breaks the مؤشر ترابط خارج of the blocking يتصل. The مؤشر ترابط should catch the ThreadInterruptedException و do whatever هو appropriate إلى متابعة working. If the مؤشر ترابط ignores the ‏‏ استثناء, the وقت التشغيل catches the ‏‏ استثناء و stops the مؤشر ترابط.

ملاحظةملاحظة

If the الهدف مؤشر ترابط ليس blocked when Thread.Interrupt هو called, the مؤشر ترابط ليس interrupted until it blocks. If the مؤشر ترابط ‏‏مطلقاً blocks, it could إكمال without ever being interrupted.

If a wait هو a مدارة wait, then Thread.Interrupt و Thread.Abort كلاهما wake the مؤشر ترابط immediately. إذا كان انتظار انتظار غير مدار (على سبيل المثال، نظاما أساسيا استدعاء استدعاء Win32 WaitForSingleObjectدالة)، ولا Thread.Interruptولا Thread.Abortيمكن التحكم مؤشر الترابط حتى يقوم بإرجاع إلى أو المكالمات إلى تعليمات برمجية مُدارة. في مدارة تعليمات برمجية, the سلوك هو كـ follows:

توقف مرحلي و سيرة ذاتية (Obsolete)

ملاحظة هامةهام

في the .NET الإصدار إطار العمل 2.0, the Thread.Suspend و Thread.Resume وظائف are marked obsolete و will be تمت إزالته في a future يطرح المنتج.

You can also pause a مؤشر ترابط بواسطة calling Thread.Suspend. When a مؤشر ترابط calls Thread.Suspend تشغيل itself, the يتصل blocks until the مؤشر ترابط هو resumed بواسطة another مؤشر ترابط. When واحد مؤشر ترابط calls Thread.Suspend تشغيل another مؤشر ترابط, the يتصل هو a non-blocking يتصل that causes the غير ذلك مؤشر ترابط إلى pause. استدعاء Thread.Resumeفواصل مؤشر ترابط آخر للخروج من الولاية التوقف المرحلي وتسبب مؤشر الترابط إلى استئناف عدة مرة/مرات للتنفيذ، بغض النظر عن كيفية Thread.Suspendتم استدعاء. على سبيل المثال، إذا قمت باستدعاء Thread.Suspendخمس مرة/مرات متتالية واستدعاء ثم Thread.Resume، تنفيذ مؤشر ترابط للسير الذاتية ومباشرة بعد إلى استدعاء Thread.Resume.

Thread.Sleep، بخلاف Thread.Suspendلا يتسبب مؤشر ترابط إلى فورا sإلىp التنفيذ. يجب أن انتظر وقت تشغيل اللغة العامة حتى وصل مؤشر ترابط بنقطة اﻷمن قبل فإنه يمكن أن توقف مرحلي مؤشر ترابط. لا يكون مؤشر ترابط مرحلياً إذا لم يتم بدء أو إذا توقف. تشغيل نقاط آمن راجع مؤشر ترابط.توقف مرحلي، ومجموعة البيانات المهملة، ونقاط و آمنة.

ملاحظة هامةهام

Thread.Suspendو Thread.Resumeوظائف غير المفيدة بشكل عام للتطبيقات ويجب أن لا يكون مرتبك مع آليات المزامنة.لأن Thread.Suspendو Thread.Resumeلا الاعتماد تشغيل التعاون لمؤشر الترابط الذي يتم التحكم به، intrusive عالية ويمكن أن ينتج مشاكل خطيرة تطبيق مثل deadlocks (تشغيل سبيل المثال، في حالة تعليق مؤشر ترابط الذي يحتفظ بأحد موارد بحاجة لمؤشر ترابط آخر).

تحتاج بعض التطبيقات إلى التحكم الأفضلية لمؤشرات الترابط لتحقيق أداء أفضل. إلى للقيام بذلك، يجب عليك استخدام Priorityخاصية بدلاً من Thread.Suspend.

راجع أيضًا:

المرجع

Thread

ThreadInterruptedException

ThreadAbortException

المبادئ

نظرة عامة حول الأوليات المزامنة

مؤشر ترابط.توقف مرحلي، تجميع البيانات المهملة، ونقاط اﻷمن

موارد أخرى

مدارة مؤشر الترابط التشعبي

استخدام عمليات جزئية و مؤشر الترابط التشعبي