クリックして評価とフィードバックをお寄せください
MSDN
MSDN ライブラリ
.NET 開発
.NET Framework 3.5
.NET Framework 3.5
System.Threading 名前空間
 ThreadState 列挙体

  低帯域幅での表示をオンにする
このページは次のバージョンについて記述しています。
Microsoft Visual Studio 2008/.NET Framework 3.5

その他のバージョンについては、以下の情報を参照してください。
.NET Framework クラス ライブラリ
ThreadState 列挙体

更新 : 2007 年 11 月

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

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

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

Visual Basic (宣言)
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
<FlagsAttribute> _
Public Enumeration ThreadState
Visual Basic (使用法)
Dim instance As ThreadState
C#
[SerializableAttribute]
[ComVisibleAttribute(true)]
[FlagsAttribute]
public enum ThreadState
Visual C++
[SerializableAttribute]
[ComVisibleAttribute(true)]
[FlagsAttribute]
public enum class ThreadState
J#
/** @attribute SerializableAttribute */ 
/** @attribute ComVisibleAttribute(true) */
/** @attribute FlagsAttribute */
public enum ThreadState
JScript
public enum ThreadState
メンバ名説明
Runningスレッドをブロックせずに起動します。保留中の ThreadAbortException もありません。
StopRequestedスレッドの停止を要求します。これは、内部でだけ使用します。
SuspendRequestedスレッドの中断を要求します。
Backgroundスレッドは、フォアグラウンド スレッドではなく、バックグランド スレッドとして実行します。この状態は、Thread..::.IsBackground プロパティを設定して制御されます。
Unstartedスレッド上に Thread..::.Start メソッドを呼び出しません。
Stoppedスレッドを停止します。
WaitSleepJoinスレッドがブロックされています。これは、Thread..::.Sleep または Thread..::.Join の呼び出し、ロックの要求 (たとえば、Monitor..::.EnterMonitor..::.Wait の呼び出しによる)、または ManualResetEvent などのスレッド同期オブジェクトの待機の結果である可能性があります。
Suspendedスレッドを中断します。
AbortRequestedスレッド上で Thread..::.Abort メソッドを呼び出しますが、そのスレッドの終了を試みる保留中の System.Threading..::.ThreadAbortException をスレッドが受け取っていません。
Abortedスレッド状態に AbortRequested が含まれ、そのスレッドは停止していますが、状態はまだ Stopped に変わっていません。

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

重要 :

スレッド状態の列挙体には、System.Threading..::.ThreadStateSystem.Diagnostics..::.ThreadState の 2 つがあります。スレッド状態の列挙体は、デバッグを行う場合に必要になることがあります。コードでは、スレッド状態を使用して、スレッドの動作を同期しないでください。

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

アクション

ThreadState

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

Unstarted

スレッドによる Start の呼び出し。

Unstarted

スレッドによる実行の開始。

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 など) を使用してスレッドが実行中かどうかをテストします。

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework および .NET Compact Framework では、各プラットフォームのすべてのバージョンはサポートしていません。サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。

.NET Framework

サポート対象 : 3.5、3.0、2.0、1.1、1.0
コミュニティ コンテンツ   コミュニティ コンテンツとは
新しいコンテンツの追加 RSS  注釈
Processing
© 2009 Microsoft Corporation. All rights reserved. 使用条件  |  商標  |  プライバシー
Page view tracker