次の方法で共有


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

参照

参照

ICorDebugThread インターフェイス

ICorDebugThread2 インターフェイス