Udostępnij za pośrednictwem


IDebugExpression2::EvaluateAsync

Ta metoda oblicza wyrażenie asynchronicznie.

Składnia

int EvaluateAsync(
    enum_EVALFLAGS       dwFlags,
    IDebugEventCallback2 pExprCallback
);

Parametry

dwFlags
[in] Kombinacja flag z wyliczenia EVALFLAGS , które kontroluje ocenę wyrażenia.

pExprCallback
[in] Ten parametr jest zawsze wartością null.

Wartość zwracana

Jeśli operacja powiedzie się, zwraca wartość S_OK; w przeciwnym razie zwraca kod błędu. Typowy kod błędu to:

Błąd opis
E_EVALUATE_BUSY_WITH_EVALUATION Obecnie oceniane jest inne wyrażenie, a jednoczesne obliczanie wyrażeń nie jest obsługiwane.

Uwagi

Ta metoda powinna zostać zwrócona natychmiast po rozpoczęciu oceny wyrażenia. Gdy wyrażenie zostanie pomyślnie ocenione, wywołanie zwrotne zdarzeń IDebugExpressionEvaluationCompleteEvent2 musi zostać wysłane do wywołania zwrotnego zdarzeń IDebugEventCallback2 dostarczonego za pośrednictwem dołączania lub dołączania.

Przykład

W poniższym przykładzie pokazano, jak zaimplementować tę metodę dla prostego CExpression obiektu, który implementuje interfejs 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;
}

Zobacz też