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