Поделиться через


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

См. также

Ссылки

IDebugExpression2

IDebugExpressionEvaluationCompleteEvent2

EVALFLAGS

IDebugEventCallback2