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 OR 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;
}