Поделиться через


Метод ICorDebugThread::SetDebugState

Задает флаги, описывающие состояние отладки этого объекта ICorDebugThread.

Синтаксис

HRESULT SetDebugState (
    [in] CorDebugThreadState state
);

Параметры

state [in] Побитовое сочетание значений перечисления CorDebugThreadState, указывающее состояние отладки этого потока.

Замечания

SetDebugState задает текущее состояние отладки потока. (Текущее состояние отладки представляет состояние отладки, если процесс должен был продолжаться, а не фактическое текущее состояние.) Обычное значение для этого — THREAD_RUN. Только отладчик может повлиять на состояние отладки потока. Состояния отладки выполняются в течение последнего времени, поэтому если вы хотите сохранить поток THREAD_SUSPENDed по нескольким продолжениям, вы можете установить его один раз и после этого не беспокоиться об этом. Приостановка потоков и возобновление процесса может привести к взаимоблокировкам, хотя это обычно маловероятно. Это внутреннее качество потоков и процессов и является путем разработки. Отладчик может асинхронно прерывать и возобновлять потоки, чтобы разорвать взаимоблокировку. Если пользовательское состояние потока включает USER_UNSAFE_POINT, поток может заблокировать сборку мусора (GC). Это означает, что приостановленный поток имеет гораздо более высокую вероятность возникновения взаимоблокировки. Это может не повлиять на события отладки, уже в очереди. Таким образом отладчик должен очистить всю очередь событий (вызвав ICorDebugController::HasQueuedCallbacks) перед приостановкой или возобновлением потоков. Кроме того, он может получить события в потоке, который он считает, что он уже приостановлен.

Требования

Платформы: см. раздел Требования к системе.

Заголовок: CorDebug.idl, CorDebug.h

Библиотека: CorGuids.lib

версии платформа .NET Framework: Доступно с версии 1.0