ICorDebugThread::SetDebugState-Methode
Legt Flags fest, die den Debugzustand dieses ICorDebugThread beschreiben.
HRESULT SetDebugState (
[in] CorDebugThreadState state
);
Parameter
- state
[in] Eine bitweise Kombination von CorDebugThreadState-Enumerationswerten, die den Debugzustand dieses Threads angeben.
Hinweise
SetDebugState legt den aktuellen Debugzustand des Threads fest. (Der "aktuelle Debugzustand" stellt den Debugzustand bei Fortsetzung des Prozesses dar, nicht den aktuellen Zustand.) Der normale Wert ist THREAD_RUNNING. Nur der Debugger kann den Debugzustand eines Threads beeinflussen. Debugzustände gehen beim Fortsetzen nicht verloren. Wenn Sie den Zustand THREAD_SUSPEND über mehrere Fortsetzungen beibehalten möchten, können Sie ihn einmal festlegen und brauchen sich keine weiteren Gedanken zu machen. Das Anhalten von Threads und das Fortsetzen des Prozesses kann Deadlocks verursachen, obwohl dies eher unwahrscheinlich ist. Es handelt sich hierbei um eine systeminterne Qualität von Threads und Prozessen, die im System vorgesehen ist. Ein Debugger kann asynchron anhalten und die Threads fortsetzen, um den Deadlock zu unterbrechen. Wenn der Benutzerzustand des Threads USER_UNSAFE_POINT einschließt, blockiert der Thread möglicherweise eine Garbage Collection (GC). Dies bedeutet, dass der angehaltene Thread eine viel höhere Chance hat, einen Deadlock zu verursachen. Dies beeinflusst möglicherweise keine Debugereignisse, die bereits in die Warteschlange gestellt sind. Deshalb sollte ein Debugger die ganze Ereigniswarteschlange leeren (durch Aufrufen von ICorDebugController::HasQueuedCallbacks), bevor Threads angehalten oder fortgesetzt werden. Andernfalls ruft er möglicherweise Ereignisse für einen Thread ab, den er bereits als angehalten betrachtet.
Anforderungen
Plattformen: siehe Systemanforderungen für .NET Framework.
Header: CorDebug.idl, CorDebug.h
Bibliothek: CorGuids.lib
.NET Framework-Versionen: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1, 1.0