ThreadState 列挙体
Thread の実行状態を指定します。
この列挙体には、メンバ値をビットごとに演算するための FlagsAttribute 属性が含まれています。
<Flags>
<Serializable>
Public Enum ThreadState
[C#]
[Flags]
[Serializable]
public enum ThreadState
[C++]
[Flags]
[Serializable]
__value public enum ThreadState
[JScript]
public
Flags
Serializable
enum ThreadState
解説
ThreadState は、スレッドに指定できるすべての実行状態のセットを定義します。スレッドは、作成されてから終了するまでの間に、少なくとも 1 つの状態になります。共通言語ランタイム内で作成されたスレッドの初期状態は Unstarted です。一方、ランタイムに外部から入ってきたスレッドは既に Running 状態になっています。 Unstarted スレッドは、 Start を呼び出すと、 Running 状態に移行します。 ThreadState 値の組み合わせがすべて有効とは限りません。たとえば、同時に Aborted 状態と Unstarted 状態になることはありません。
状態が変更される原因となるアクションを次の表に示します。
アクション | ThreadState |
---|---|
スレッドを共通言語ランタイム内で作成する。 | Unstarted |
スレッドによる Start の呼び出し。 | Running |
スレッドによる実行の開始。 | Running |
Sleep の呼び出し。 | WaitSleepJoin |
スレッドによる、別のオブジェクト上での Wait の呼び出し。 | WaitSleepJoin |
スレッドによる、別のスレッド上での Join の呼び出し。 | WaitSleepJoin |
別のスレッドによる Interrupt の呼び出し。 | Running |
別のスレッドによる Suspend の呼び出し。 | SuspendRequested |
スレッドが Suspend 要求に応答する。 | Suspended |
別のスレッドによる Resume の呼び出し。 | Running |
別のスレッドによる Abort の呼び出し。 | AbortRequested |
スレッドが Abort 要求に応答する。 | Stopped |
スレッドの終了。 | Stopped |
上に示した状態の他に、 Background 状態もあります。これは、スレッドがバックグランドとフォアグラウンドのどちらで実行されているかどうかを示す状態です。
スレッドは特定の場合に複数の状態になることがあります。たとえば、スレッドが Wait を呼び出してブロックされ、別のスレッドがそのブロックされたスレッドで Abort を呼び出すと、スレッドは同時に WaitSleepJoin の状態と AbortRequested の状態になります。この場合は、スレッドが Wait の呼び出しから戻る、または中断されるとすぐに ThreadAbortException を受け取り、アボートを開始します。
スレッドの Thread.ThreadState プロパティは、スレッドの現在の状態を提供します。アプリケーションは、ビットマスクを使用してスレッドが実行中かどうかを判断する必要があります。 Running の値が 0 である場合は、C# コード ((myThread.ThreadState & (ThreadState.Stopped | ThreadState.Unstarted)) == 0
など) または Visual Basic コード ((myThread.ThreadState And (ThreadState.Stopped Or ThreadState.Unstarted)) = 0
など) を使用してスレッドが実行中かどうかをテストします。
メンバ
メンバ名 | 説明 | 値 |
---|---|---|
Aborted | スレッドが Stopped 状態です。 | 256 |
AbortRequested | スレッド上で Thread.Abort メソッドを呼び出しますが、そのスレッドの終了を試みる保留中の System.Threading.ThreadAbortException をスレッドが受け取っていません。 | 128 |
Background | スレッドは、フォアグラウンド スレッドではなく、バックグランド スレッドとして実行します。この状態は、 Thread.IsBackground プロパティを設定して制御されます。 | 4 |
Running | スレッドをブロックせずに起動します。保留中の ThreadAbortException もありません。 | 0 |
Stopped | スレッドを停止します。 | 16 |
StopRequested | スレッドの停止を要求します。これは、内部でだけ使用します。 | 1 |
Suspended | スレッドを中断します。 | 64 |
SuspendRequested | スレッドの中断を要求します。 | 2 |
Unstarted | スレッド上に Thread.Start メソッドを呼び出しません。 | 8 |
WaitSleepJoin | Wait 、 Sleep 、または Join を呼び出すと、スレッドがブロックされます。 | 32 |
必要条件
名前空間: System.Threading
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
アセンブリ: Mscorlib (Mscorlib.dll 内)
参照
System.Threading 名前空間 | Thread | スレッド状態 | マネージ スレッドとアンマネージ スレッド