ThreadState Sabit listesi
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
bir Threadöğesinin yürütme durumlarını belirtir.
Bu sabit listesi, üyeleri için bit düzeyinde karşılaştırmayı destekler.
public enum class ThreadState
[System.Flags]
public enum ThreadState
[System.Flags]
[System.Runtime.InteropServices.ComVisible(true)]
public enum ThreadState
[System.Flags]
[System.Serializable]
public enum ThreadState
[System.Flags]
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public enum ThreadState
[<System.Flags>]
type ThreadState =
[<System.Flags>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ThreadState =
[<System.Flags>]
[<System.Serializable>]
type ThreadState =
[<System.Flags>]
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Serializable>]
type ThreadState =
Public Enum ThreadState
- Devralma
- Öznitelikler
Alanlar
Aborted | 256 | İş parçacığı durumu içerir AbortRequested ve iş parçacığı artık ölüdür, ancak durumu henüz olarak Stoppeddeğişmemiştir. |
AbortRequested | 128 | Abort(Object) yöntemi iş parçacığında çağrıldı, ancak iş parçacığı henüz sonlandırmaya çalışacak bekleyen ThreadAbortException almamıştır. |
Background | 4 | İş parçacığı, ön plan iş parçacığının aksine arka plan iş parçacığı olarak yürütülüyor. Bu durum, özelliği ayarlanarak denetlenmektedir IsBackground . |
Running | 0 | İş parçacığı başlatıldı ve henüz durdurulmadı. |
Stopped | 16 | İş parçacığı durduruldu. |
StopRequested | 1 | İş parçacığının durdurulması isteniyor. Bu yalnızca dahili kullanım içindir. |
Suspended | 64 | İş parçacığı askıya alındı. |
SuspendRequested | 2 | İş parçacığının askıya alınması isteniyor. |
Unstarted | 8 | Start() yöntemi iş parçacığında çağrılmıyor. |
WaitSleepJoin | 32 | İş parçacığı engellenir. Bu, veya Join()çağrısının Sleep(Int32) veya gibi bir iş parçacığı eşitleme nesnesinin ManualResetEventbeklemesi gibi bir kilit Enter(Object)Wait(Object, Int32, Boolean) istemenin sonucu olabilir. |
Açıklamalar
Numaralandırma, ThreadState
iş parçacıkları için tüm olası yürütme durumlarını tanımlar. Yalnızca birkaç hata ayıklama senaryosunda ilgi çekicidir. Kodunuz hiçbir zaman iş parçacığının etkinliklerini eşitlemek için iş parçacığı durumunu kullanmamalıdır.
bir iş parçacığı oluşturulduktan sonra, sonlandırılana kadar en az bir durumda olur. Ortak dil çalışma zamanı içinde oluşturulan iş parçacıkları başlangıçta Unstarted durumundayken, çalışma zamanına gelen dış veya yönetilmeyen iş parçacıkları zaten Running durumundadır. bir iş parçacığı çağrılarak Thread.Startdurumundan Running durumuna geçirilirUnstarted. bir iş parçacığı çağrısının sonucu olarak durumundan Startayrıldıktan Unstarted sonra hiçbir zaman duruma geri dönemezUnstarted.
bir iş parçacığı belirli bir anda birden fazla durumda olabilir. Örneğin, bir iş parçacığı çağrısında engellenirse ve engellenen iş parçacığında başka bir Monitor.Waitiş parçacığı çağırırsaThread.Abort, engellenen iş parçacığı hem hem AbortRequested de WaitSleepJoin durumlarında aynı anda olur. Bu durumda, iş parçacığı çağrısından veya öğesine döner dönmez veya kesintiye Monitor.Wait uğrar kesilmez durdurulmaya başlamak için değerini ThreadAbortException alır. Değerlerin ThreadState
tüm birleşimleri geçerli değildir; örneğin, bir iş parçacığı hem hem de AbortedUnstarted durumlarında olamaz.
bir iş parçacığı hiçbir zaman durumdan Stopped ayrılamıyor.
Önemli
İki iş parçacığı durumu numaralandırması vardır: System.Threading.ThreadState ve System.Diagnostics.ThreadState.
Aşağıdaki tabloda, durum değişikliğine neden olan eylemler gösterilmektedir.
Eylem | ThreadState |
---|---|
Ortak dil çalışma zamanı içinde bir iş parçacığı oluşturulur. | Unstarted |
Başka bir iş parçacığı yeni iş parçacığında yöntemini çağırır Thread.Start ve çağrısı döndürür. Yeni Start iş parçacığı çalışmaya başlayana kadar yöntemi döndürülmüyor. çağrısı sırasında yeni iş parçacığının hangi noktada çalışmaya başlayacağını bilmenin Starthiçbir yolu yoktur. |
Running |
İş parçacığı çağrıları Sleep | WaitSleepJoin |
İş parçacığı başka bir nesnede çağırır Monitor.Wait . | WaitSleepJoin |
İş parçacığı başka bir iş parçacığında çağırır Join . | WaitSleepJoin |
Başka bir iş parçacığı çağrısı Interrupt | Running |
Başka bir iş parçacığı çağrısı Suspend | SuspendRequested |
İş parçacığı bir Suspend isteğe yanıt verir. | Suspended |
Başka bir iş parçacığı çağrısı Resume | Running |
Başka bir iş parçacığı çağrısı Abort | AbortRequested |
İş parçacığı bir Abort isteğe yanıt verir. | Stopped |
İş parçacığı sonlandırıldı. | Stopped |
Yukarıda belirtilen durumlara ek olarak, iş parçacığının Background arka planda mı yoksa ön planda mı çalıştığını gösteren durum da vardır. Daha fazla bilgi için bkz. Ön Plan ve Arka Plan İş Parçacıkları.
bir Thread.ThreadState iş parçacığının özelliği, bir iş parçacığının geçerli durumunu sağlar. Uygulamaların bir iş parçacığının çalışıp çalışmadığını belirlemek için bit maskesi kullanması gerekir. değeri Running sıfır (0) olduğundan, aşağıdaki kodla bir iş parçacığının çalışıp çalışmadığını test edin:
(myThread.ThreadState & (ThreadState.Stopped | ThreadState.Unstarted)) == 0
(myThread.ThreadState And (ThreadState.Stopped Or ThreadState.Unstarted)) = 0