Condividi tramite


IDebugExpression2::EvaluateAsync

Questo metodo valuta l'espressione in modo asincrono.

Sintassi

int EvaluateAsync(
    enum_EVALFLAGS       dwFlags,
    IDebugEventCallback2 pExprCallback
);

Parametri

dwFlags
[in] Combinazione di flag dell'enumerazione EVALFLAGS che controlla la valutazione dell'espressione.

pExprCallback
[in] Questo parametro è sempre un valore Null.

Valore restituito

Se ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore. Un codice di errore tipico è:

Errore Descrizione
E_EVALUATE_BUSY_WITH_EVALUATION È in corso la valutazione di un'altra espressione e la valutazione simultanea delle espressioni non è supportata.

Osservazioni:

Questo metodo deve restituire immediatamente dopo l'avvio della valutazione dell'espressione. Quando l'espressione viene valutata correttamente, è necessario inviare un callback dell'evento IDebugExpressionEvaluationCompleteEvent2 all'evento IDebugEventCallback2 come specificato tramite Attach o Attach.

Esempio

Nell'esempio seguente viene illustrato come implementare questo metodo per un oggetto semplice CExpression che implementa l'interfaccia 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;
}

Vedi anche