ICorDebugThread::SetDebugState メソッド
この ICorDebugThread のデバッグ状態を表すフラグを設定します。
HRESULT SetDebugState (
[in] CorDebugThreadState state
);
パラメーター
- state
[入力] このスレッドのデバッグ状態を指定する CorDebugThreadState 列挙値のビットごとの組み合わせ。
解説
SetDebugState は、スレッドの現在のデバッグ状態を設定します。 "現在のデバッグ状態" とは、実際の現在の状態ではなく、プロセスを続行するかどうかというデバッグ状態を表します。 通常の値は THREAD_RUNNING です。 スレッドのデバッグ状態に影響するのはデバッガーだけです。 デバッグ状態は続行しても引き継がれるため、続行中、スレッドを THREAD_SUSPEND にした状態を維持するには、一度スレッドを設定するだけで、後は意識する必要はありません。 通常はほとんどありませんが、スレッドの中断とプロセスの再開により、デッドロックが発生する可能性があります。 これは、スレッドとプロセスの組み込みの性質であり、意図的なものです。 デバッガーは、デッドロックを解除するために、スレッドを非同期的に中断して再開できます。 スレッドのユーザー状態に USER_UNSAFE_POINT が含まれる場合、スレッドはガベージ コレクション (GC: Garbage Collection) をブロックできます。 これは、中断されたスレッドでは、デッドロックが発生する可能性が高いことを意味します。 これは、既にキューに配置されたデバッグ イベントには影響しないことがあります。 したがって、デバッガーは、スレッドを中断または再開する前に ICorDebugController::HasQueuedCallbacks を呼び出して、イベント キュー全体をドレインする必要があります。 それ以外の場合、デバッガーはスレッドが既に中断されたと見なして、スレッド上のイベントを取得する可能性があります。
必要条件
プラットフォーム: 「.NET Framework システム要件」を参照
ヘッダー: CorDebug.idl、CorDebug.h
ライブラリ: CorGuids.lib
.NET Framework のバージョン: 4、3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0、1.1、1.0