次の方法で共有


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 WaitSleep 、または 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 | スレッド状態 | マネージ スレッドとアンマネージ スレッド