COR_PRF_SUSPEND_REASON 枚举
指示运行时挂起的原因。
typedef enum {
COR_PRF_SUSPEND_OTHER = 0x00,
COR_PRF_SUSPEND_FOR_GC = 0x01,
COR_PRF_SUSPEND_FOR_APPDOMAIN_SHUTDOWN = 0x02,
COR_PRF_SUSPEND_FOR_CODE_PITCHING = 0x03,
COR_PRF_SUSPEND_FOR_SHUTDOWN = 0x04,
COR_PRF_SUSPEND_FOR_INPROC_DEBUGGER = 0x06,
COR_PRF_SUSPEND_FOR_GC_PREP = 0x07
} COR_PRF_SUSPEND_REASON;
成员
成员 |
说明 |
---|---|
COR_PRF_FIELD_SUSPEND_OTHER |
运行时因未指定的原因而挂起。 |
COR_PRF_FIELD_SUSPEND_FOR_GC |
运行时挂起,以便为垃圾回收请求提供服务。 与垃圾回收相关的回调在 ICorProfilerCallback::RuntimeSuspendFinished 和 ICorProfilerCallback::RuntimeResumeStarted 回调之间发生。 |
COR_PRF_FIELD_SUSPEND_FOR_APPDOMAIN_SHUTDOWN |
运行时挂起,以便可以关闭 AppDomain。 当运行时挂起时,该运行时将确定要关闭的 AppDomain 中包含哪些线程并将它们设置为在继续时中止。 在此挂起期间,不存在任何 AppDomain 特定的回调。 |
COR_PRF_FIELD_SUSPEND_FOR_CODE_PITCHING |
运行时挂起,以便进行代码间距调整。 仅当实时 (JIT) 编译器处于活动状态并且启用了代码间距调整时,才会进行代码间距调整。 代码间距调整回调发生在 ICorProfilerCallback::RuntimeSuspendFinished 和 ICorProfilerCallback::RuntimeResumeStarted 回调之间。
注意
在 .NET Framework 2.0 版中,CLR JIT 并不调整函数的间距,因此 2.0 版中并不使用此值。
|
COR_PRF_FIELD_SUSPEND_FOR_SHUTDOWN |
运行时挂起,以便可以将它关闭。 它必须挂起所有线程才能完成该操作。 |
COR_PRF_FIELD_SUSPEND_FOR_INPROC_DEBUGGER |
运行时挂起,以便执行进程内调试。 |
COR_PRF_FIELD_SUSPEND_FOR_GC_PREP |
运行时挂起,以便准备垃圾回收。 |
备注
非托管代码中的所有运行时线程都可以继续运行,直到它们尝试重新进入运行时时为止,此时,如果运行时尚未继续,则这些线程也将挂起。 这也适用于进入运行时的新线程。 对于运行时中的所有线程,如果它们处于不可中断的代码区中,则会立即将它们挂起,否则将会在它们到达不可中断的代码区时请求将它们挂起。
要求
**平台:**请参见 .NET Framework 系统要求。
**头文件:**CorProf.idl、CorProf.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