الولايات مؤشر ترابط المدارة
خاصية Thread.ThreadStateيوفر قناع بت الذي يشير إلى مؤشر ترابط's الحالية الولاية. مؤشر ترابط هو دائماً في الأقل من الحالات الممكنة في ThreadStateتعداد، ويمكن أن تكون في حالات متعددة في نفس الوقت.
هام |
---|
مؤشر ترابط الولاية هو من الاهتمام بعدد قليل فقط تصحيح السيناريوهات.يجب عدم استخدام تعليمات برمجية الخاصة بك ابدأ الولاية مؤشر ترابط إلى تزامن الأنشطة من عمليات جزئية. |
عندما تقوم بإنشاء المدارة الترابط هو في Unstartedالحالة. يظل مؤشر ترابط في Unstartedلالولاية حتى يتم نقله في الولاية البدء نظام تشغيل. استدعاء Startيتيح النظام التشغيل تعرف أنه يمكن بدء تشغيل مؤشر ترابط، لم تكن تغيير الولاية مؤشر ترابط.
عمليات جزئية غير مدار إدخال بيئة التي تتم إدارتها بالفعل في الولاية البدء. بمجرد أن في الولاية البدء، هناك العديد من الإجراءات التي يمكن أن تسبب مؤشر الترابط إلى تغيير حالات. يسرد الجدول التالي الإجراءات التي تؤدي إلى تغيير الولاية، بالإضافة إلى المطابقة جديد الالولاية.
Action |
الولاية الجديدة الناتجة |
---|---|
باستدعاء مؤشر ترابط آخر Thread.Start. |
لم يتم تغييرها |
مؤشر ترابط يستجيب إلى Thread.Startوبدء تشغيلها. |
|
باستدعاء مسار التنفيذ Thread.Sleep. |
|
مؤشر ترابط باستدعاء Monitor.Waitتشغيل كائن آخر. |
|
مؤشر الترابط باستدعاء Thread.Joinتشغيل مؤشر ترابط آخر. |
|
باستدعاء مؤشر ترابط آخر Thread.Suspend. |
|
يستجيب مؤشر ترابط إلى Thread.Suspendالطلب. |
|
باستدعاء مؤشر ترابط آخر Thread.Resume. |
|
باستدعاء مؤشر ترابط آخر Thread.Suspend. |
|
باستدعاء مؤشر ترابط آخر Thread.Abort. |
|
مؤشر ترابط يستجيب إلى Thread.Abort. |
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 الولاية.