ThreadState Sabit listesi

Tanım

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
ThreadState
Ö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

Şunlara uygulanır

Ayrıca bkz.