IDebugExpression2::EvaluateAsync
這個方法會以非同步方式評估運算式。
HRESULT EvaluateAsync (
EVALFLAGS dwFlags,
IDebugEventCallback2* pExprCallback
);
int EvaluateAsync(
enum_EVALFLAGS dwFlags,
IDebugEventCallback2 pExprCallback
);
參數
dwFlags
[in]從的旗標組合EVALFLAGS控制運算式評估的列舉型別。pExprCallback
[in]這個參數永遠是 null 值。
傳回值
如果成功的話,會傳回S_OK。 否則會傳回錯誤碼。 典型的錯誤碼是:
錯誤 |
描述 |
---|---|
E_EVALUATE_BUSY_WITH_EVALUATION |
目前在評估另一個運算式,並不支援同時的運算式評估。 |
備註
這個方法會在它啟動運算式評估之後,立即傳回。 成功地評估運算式時, IDebugExpressionEvaluationCompleteEvent2必須傳送至IDebugEventCallback2事件的回呼,透過提供IDebugProgram2::Attach或IDebugEngine2::Attach。
範例
下列範例會示範如何實作這個方法,如CExpression實作物件IDebugExpression2介面。
HRESULT CExpression::EvaluateAsync(EVALFLAGS dwFlags,
IDebugEventCallback2* pExprCallback)
{
// Set the aborted state to FALSE
// in case the user tries to redo the evaluation after aborting.
m_bAborted = FALSE;
// Post the WM_EVAL_EXPR message in the message queue of the current thread.
// This starts the expression evaluation on a background thread.
PostThreadMessage(GetCurrentThreadId(), WM_EVAL_EXPR, 0, (LPARAM) this);
return S_OK;
}