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

خاصية Thread.ThreadStateيوفر قناع بت الذي يشير إلى مؤشر ترابط's الحالية الولاية. مؤشر ترابط هو دائماً في الأقل من الحالات الممكنة في ThreadStateتعداد، ويمكن أن تكون في حالات متعددة في نفس الوقت.

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

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

عندما تقوم بإنشاء المدارة الترابط هو في Unstartedالحالة. يظل مؤشر ترابط في Unstartedلالولاية حتى يتم نقله في الولاية البدء نظام تشغيل. استدعاء Startيتيح النظام التشغيل تعرف أنه يمكن بدء تشغيل مؤشر ترابط، لم تكن تغيير الولاية مؤشر ترابط.

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

Action

الولاية الجديدة الناتجة

باستدعاء مؤشر ترابط آخر Thread.Start.

لم يتم تغييرها

مؤشر ترابط يستجيب إلى Thread.Startوبدء تشغيلها.

Running

باستدعاء مسار التنفيذ Thread.Sleep.

WaitSleepJoin

مؤشر ترابط باستدعاء Monitor.Waitتشغيل كائن آخر.

WaitSleepJoin

مؤشر الترابط باستدعاء Thread.Joinتشغيل مؤشر ترابط آخر.

WaitSleepJoin

باستدعاء مؤشر ترابط آخر Thread.Suspend.

SuspendRequested

يستجيب مؤشر ترابط إلى Thread.Suspendالطلب.

Suspended

باستدعاء مؤشر ترابط آخر Thread.Resume.

Running

باستدعاء مؤشر ترابط آخر Thread.Suspend.

Running

باستدعاء مؤشر ترابط آخر Thread.Abort.

AbortRequested

مؤشر ترابط يستجيب إلى Thread.Abort.

Aborted

Because the Runningstate has a value of 0, it is not possible to perform a bit test to discover this state. بدلاً من ذلك، يمكن استخدام الاختبار التالي (في pseudo-تعليمات برمجية):

if ((state & (Unstarted | Stopped)) == 0)   // implies Running   

عمليات جزئية غالباً في الولاية واحد أو المزيد في أي وقت معطى. For مثال, if a مؤشر ترابط هو blocked تشغيل a Monitor.Wait يتصل و another مؤشر ترابط calls Abort تشغيل that same مؤشر ترابط, the مؤشر ترابط will be في كلاهما the WaitSleepJoin و the AbortRequested الولاية at the same الوقت. في that حالة, كـ soon كـ the مؤشر ترابط إرجاع من the يتصل إلى Wait أو هو interrupted, it will receive the ThreadAbortException.

Once a مؤشر ترابط leaves the Unstarted الولاية كـ the النتيجة of a يتصل إلى Start, it can ‏‏مطلقاً return إلى the Unstarted الولاية. A مؤشر ترابط can ‏‏مطلقاً المغادرة the Stopped الولاية.

راجع أيضًا:

المرجع

ThreadAbortException

Thread

ThreadState

موارد أخرى

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