IDebugExpression2::EvaluateAsync

Este método evalúa la expresión de forma asincrónica.

Sintaxis

int EvaluateAsync(
    enum_EVALFLAGS       dwFlags,
    IDebugEventCallback2 pExprCallback
);

Parámetros

dwFlags
[in] Combinación de marcas de la enumeración EVALFLAGS que controla la evaluación de expresiones.

pExprCallback
[in] Este parámetro siempre es un valor NULL.

Valor devuelto

Si la operación se realiza correctamente, devuelve S_OK; de lo contrario, devuelve un código de error. Un código de error típico es:

Error Descripción
E_EVALUATE_BUSY_WITH_EVALUATION Actualmente no se admite otra expresión y no se admite la evaluación de expresiones simultáneas.

Comentarios

Este método debe devolver inmediatamente después de iniciar la evaluación de expresiones. Cuando la expresión se evalúa correctamente, se debe enviar una devolución de llamada de evento IDebugExpressionEvaluationCompleteEvent2 a la devolución de llamada del evento IDebugEventCallback2 proporcionada a través de Attach o Attach.

Ejemplo

En el ejemplo siguiente se muestra cómo implementar este método para un objeto simple CExpression que implementa la interfaz 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;
}

Consulte también