次の方法で共有


ICorDebugThread::SetDebugState メソッド

この ICorDebugThread のデバッグ状態を記述するフラグを設定します。

構文

HRESULT SetDebugState (  
    [in] CorDebugThreadState state  
);  

パラメーター

state
[in] このスレッドのデバッグ状態を指定する CorDebugThreadState 列挙値のビットごとの組み合わせ。

解説

SetDebugState では、スレッドの現在のデバッグ状態を設定します。 ("現在のデバッグ状態" とは、実際の現在の状態ではなく、プロセスが継続された場合のデバッグ状態を表します)。この場合の通常の値は THREAD_RUN です。 スレッドのデバッグ状態に影響を与えられるのはデバッガーだけです。 デバッグ状態は継続間で存続するので、複数の継続にわたってスレッド THREAD_SUSPENDed を維持する場合、これを 1 回設定するだけで、それ以降は心配する必要はありません。 スレッドを中断してプロセスを再開するとデッドロックが発生することがありますが、通常は可能性は低いです。 これは、スレッドとプロセスの本質であり、設計によるものです。 デバッガーは、スレッドの中断と再開を非同期的に行って、デッドロックを解決することができます。 スレッドのユーザー状態に USER_UNSAFE_POINT が含まれている場合、スレッドはガベージ コレクション (GC) をブロックする可能性があります。 これは、中断されたスレッドがデッドロックの原因となる可能性が非常に高いことを意味します。 これは、既にキューに登録されているデバッグ イベントには影響しません。 したがって、デバッガーは、スレッドを中断または再開する前に、(ICorDebugController::HasQueuedCallbacksを呼び出すことによって) イベント キュー全体をドレインする必要があります。 それ以外の場合は、既に中断されていると確信しているスレッドでイベントを取得できます。

必要条件

:システム要件」を参照してください。

ヘッダー: CorDebug.idl、CorDebug.h

ライブラリ: CorGuids.lib

.NET Framework のバージョン: 1.0 以降で使用可能