IDebugExpression2::EvaluateAsync
Este método evalúa la expresión de forma asincrónica.
Sintaxis
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;
}