ThreadStateとは? わかりやすく解説

ThreadState 列挙体

スレッドの現在の実行状態を指定します。

名前空間: System.Diagnostics
アセンブリ: System (system.dll 内)
構文構文

public enum ThreadState
public enum class ThreadState
public enum ThreadState
public enum ThreadState
メンバメンバ
 メンバ名説明
Initializedスレッドは初期化されたが、まだ開始していないことを示す状態。 
Ready解放されているプロセッサがないため、スレッドがプロセッサの使用を待機していることを示す状態。スレッドは、次に利用可能になるプロセッサで実行する準備が整っています。 
Runningスレッドが現在プロセッサを使用していることを示す状態。 
Standbyスレッドがすぐにプロセッサを使用することを示す状態。一度に 1 つのスレッドだけが、この状態になることができます。 
Terminatedスレッドが実行を終了しスレッド自身も終了したことを示す状態。 
Transitionスレッドが、実行前にプロセッサ以外のリソースを待機していることを示す状態。たとえば、ディスクから実行スタックのページングを待機している場合があります。 
Unknownスレッドの状態が不明です。 
Waitスレッドが、周辺操作の完了またはリソースの解放を待機しているために、プロセッサを使用する準備が整っていないことを示す状態。スレッドの準備が整うと、スケジュールが再設定されます。 
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

ThreadState 列挙体

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

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

名前空間: System.Threading
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

<SerializableAttribute> _
<ComVisibleAttribute(True)> _
<FlagsAttribute> _
Public Enumeration ThreadState
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
[FlagsAttribute] 
public enum ThreadState
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
[FlagsAttribute] 
public enum class ThreadState
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
/** @attribute FlagsAttribute() */ 
public enum ThreadState
SerializableAttribute 
ComVisibleAttribute(true) 
FlagsAttribute 
public enum ThreadState
メンバメンバ
 メンバ名説明
Abortedスレッドが Stopped 状態です。 
AbortRequestedスレッド上で Thread.Abort メソッドを呼び出しますが、そのスレッドの終了を試みる保留中の System.Threading.ThreadAbortException をスレッドが受け取っていません。 
Backgroundスレッドは、フォアグラウンド スレッドではなく、バックグランド スレッドとして実行します。この状態は、Thread.IsBackground プロパティを設定して制御されます。 
Runningスレッドをブロックせずに起動します。保留中の ThreadAbortException もありません。 
Stoppedスレッドを停止します。 
StopRequestedスレッドの停止を要求します。これは、内部でだけ使用します。 
Suspendedスレッドを中断します。 
SuspendRequestedスレッドの中断を要求します。 
Unstartedスレッド上に Thread.Start メソッドを呼び出しません。 
WaitSleepJoinWait、Sleep、または Join を呼び出すと、スレッドがブロックされます。 
解説解説

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

メモ重要 :

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

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

上に示した状態の他に、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 など) を使用してスレッドが実行中かどうかをテストします。

プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「ThreadState」の関連用語

ThreadStateのお隣キーワード

   

英語⇒日本語
日本語⇒英語
   



ThreadStateのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS