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


IDebugExpression2::EvaluateAsync

Этот метод асинхронно оценивает выражение.

Синтаксис

int EvaluateAsync(
    enum_EVALFLAGS       dwFlags,
    IDebugEventCallback2 pExprCallback
);

Параметры

dwFlags
[in] Сочетание флагов из перечисления EVALFLAGS , которое оценивает выражение элемента управления.

pExprCallback
[in] Этот параметр всегда имеет значение NULL.

Возвращаемое значение

В случае успешного выполнения возвращается S_OK; в противном случае возвращается код ошибки. Типичный код ошибки:

Ошибка Описание
E_EVALUATE_BUSY_WITH_EVALUATION Другое выражение в настоящее время вычисляется, а одновременное вычисление выражений не поддерживается.

Замечания

Этот метод должен вернуться сразу после запуска оценки выражений. При успешной оценке выражения необходимо отправить обратный вызов события IDebugExpressionEvaluationEvaluationCompleteEvent2 в обратный вызов события IDebugEventCallback2 , как показано через Подключение или подключение.

Пример

В следующем примере показано, как реализовать этот метод для простого 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;
}

См. также