本文整理汇总了C++中CLR_RT_StackFrame::Next方法的典型用法代码示例。如果您正苦于以下问题:C++ CLR_RT_StackFrame::Next方法的具体用法?C++ CLR_RT_StackFrame::Next怎么用?C++ CLR_RT_StackFrame::Next使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CLR_RT_StackFrame
的用法示例。
在下文中一共展示了CLR_RT_StackFrame::Next方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SpawnTimer
void CLR_RT_HeapBlock_Timer::SpawnTimer( CLR_RT_Thread* th )
{
NATIVE_PROFILE_CLR_CORE();
//Only one managed timer max
_ASSERTE(m_references.NumOfNodes() == 1);
CLR_RT_ObjectToEvent_Source* ref = (CLR_RT_ObjectToEvent_Source*)m_references.FirstValidNode();
CLR_RT_HeapBlock* managedTimer = ref->m_objectPtr;
CLR_RT_HeapBlock* callback = &managedTimer[ Library_corlib_native_System_Threading_Timer::FIELD__m_callback ];
CLR_RT_HeapBlock* state = &managedTimer[ Library_corlib_native_System_Threading_Timer::FIELD__m_state ];
CLR_RT_HeapBlock_Delegate* delegate = callback->DereferenceDelegate();
CLR_RT_ProtectFromGC gc( *managedTimer );
_ASSERTE(delegate != NULL); if(delegate == NULL) return;
_ASSERTE(delegate->DataType() == DATATYPE_DELEGATE_HEAD);
m_ticksLastExpiration = g_CLR_RT_ExecutionEngine.m_currentMachineTime;
m_timeLastExpiration = m_timeExpire;
m_timeExpire = TIMEOUT_INFINITE;
if(SUCCEEDED(th->PushThreadProcDelegate( delegate )))
{
CLR_RT_StackFrame* stack = th->FirstFrame();
if(stack->Next() != NULL)
{
int numArgs = stack->m_call.m_target->numArgs;
if(numArgs > 0)
{
stack->m_arguments[ numArgs-1 ].Assign( *state );
}
}
//
// Associate the timer with the thread.
//
m_flags |= CLR_RT_HeapBlock_Timer::c_Executing;
m_flags &= ~CLR_RT_HeapBlock_Timer::c_Triggered;
th->m_terminationCallback = CLR_RT_HeapBlock_Timer::ThreadTerminationCallback;
th->m_terminationParameter = this;
}
}