Partager via


IDebugExpression2::EvaluateAsync

Cette méthode évalue l’expression de façon asynchrone.

Syntaxe

int EvaluateAsync(
    enum_EVALFLAGS       dwFlags,
    IDebugEventCallback2 pExprCallback
);

Paramètres

dwFlags
[in] Combinaison d’indicateurs de l’énumération EVALFLAGS qui contrôle l’évaluation d’expression.

pExprCallback
[in] Ce paramètre est toujours une valeur Null.

Valeur de retour

En cas de réussite, retourne S_OK ; sinon, retourne un code d’erreur. Un code d’erreur classique est :

Erreur Description
E_EVALUATE_BUSY_WITH_EVALUATION Une autre expression est actuellement évaluée et l’évaluation simultanée de l’expression n’est pas prise en charge.

Notes

Cette méthode doit retourner immédiatement une fois l’évaluation de l’expression démarrée. Lorsque l’expression est correctement évaluée, un IDebugExpressionEvaluationCompleteEvent2 doit être envoyé au rappel d’événement IDebugEventCallback2 tel qu’il est fourni via Attach ou Attach.

Exemple

L’exemple suivant montre comment implémenter cette méthode pour un objet simple CExpression qui implémente l’interface 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;
}

Voir aussi