エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

ThreadState 列挙体

2013/12/12

Thread の実行状態を指定します。

この列挙体には、メンバー値のビットごとの組み合わせを可能にする FlagsAttribute 属性が含まれています。

Namespace:  System.Threading
アセンブリ:  mscorlib (mscorlib.dll 内)

[FlagsAttribute]
public enum ThreadState

メンバー名説明
Abortedスレッド状態に AbortRequested が含まれ、そのスレッドは停止していますが、状態はまだ Stopped に変わっていません。
AbortRequestedスレッド上で Thread.Abort メソッドを呼び出しますが、そのスレッドの終了を試みる保留中の System.Threading.ThreadAbortException をスレッドが受け取っていません。
Backgroundスレッドは、フォアグラウンド スレッドではなく、バックグランド スレッドとして実行します。この状態は、Thread.IsBackground プロパティを設定して制御されます。
Runningスレッドをブロックせずに起動します。保留中の ThreadAbortException もありません。
Stoppedスレッドを停止します。
StopRequestedスレッドの停止を要求します。これは、内部でだけ使用します。
Suspendedスレッドを中断します。
SuspendRequestedスレッドに中断のマークが付けられています。
Unstartedスレッド上に Thread.Start メソッドを呼び出しません。
WaitSleepJoinスレッドがブロックされています。これは、Thread.Sleep または Thread.Join の呼び出し、ロックの要求 (たとえば、Monitor.EnterMonitor.Wait の呼び出しによる)、または ManualResetEvent などのスレッド同期オブジェクトの待機の結果である可能性があります。

ThreadState は、スレッドに指定できるすべての実行状態のセットを定義します。スレッドは、作成されてから終了するまでの間に、少なくとも 1 つの状態になります。共通言語ランタイム内で作成されたスレッドの初期状態は Unstarted です。一方、ランタイムに外部から入ってきたスレッドは既に Running 状態になっています。Unstarted スレッドは、Start メソッドを呼び出すと、Running 状態に移行します。ThreadState 値の組み合わせがすべて有効とは限りません。たとえば、同時に Aborted 状態と Unstarted 状態になることはありません。

重要: 重要:

スレッド状態は、デバッグを行う場合に必要になることがあります。コード内で、スレッドの動作を同期化する目的でスレッドの状態を使用しないでください。

状態が変更される原因となるアクションを次の表に示します。

Action

ThreadState

スレッドを共通言語ランタイム内で作成する。

Unstarted

スレッドの Start メソッドが別のスレッドで呼び出される。

Unstarted

スレッドの実行が開始される。

Running

スレッドが Sleep を呼び出します。

WaitSleepJoin

スレッドが Wait を呼び出すか、他のブロッキング呼び出しを行う。

WaitSleepJoin

スレッドによる、別のスレッド上での Join の呼び出し。

WaitSleepJoin

たとえばガベージ コレクションを実行するために、共通言語ランタイムが中断用にスレッドをマークする。

SuspendRequested

スレッドは一時停止しています。

Suspended

中断された後にスレッドが操作を再開する。

Running

スレッドの Thread.Abort を別のスレッドが呼び出す。

AbortRequested

スレッドが終了する。

停止

スレッド自体または別のスレッドによって、スレッドの Thread.IsBackground プロパティが true に設定される。

Background

スレッドは特定の場合に複数の状態になることがあります。次に例を示します。

  • Background 状態は、他の任意の状態と結合できます。

  • スレッドが Monitor.Wait を呼び出してブロックされ、システムによって中止されると、ブロックされたスレッドは同時に 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 などのコードを使用してテストします。

Windows Phone OS

サポート: 8.0, 7.1, 7.0

表示:
© 2015 Microsoft