IDebugExpression2::EvaluateAsync
Esse método avalia a expressão assincronamente.
HRESULT EvaluateAsync (
EVALFLAGS dwFlags,
IDebugEventCallback2* pExprCallback
);
int EvaluateAsync(
enum_EVALFLAGS dwFlags,
IDebugEventCallback2 pExprCallback
);
Parâmetros
dwFlags
[in] Uma combinação de sinalizadores da EVALFLAGS enumeração que controlam a avaliação da expressão.pExprCallback
[in] Este parâmetro é sempre um valor nulo.
Valor de retorno
Se bem-sucedida, retorna S_OK; Caso contrário, retorna um código de erro. Um código de erro típica é:
Erro |
Descrição |
---|---|
E_EVALUATE_BUSY_WITH_EVALUATION |
Outra expressão no momento está sendo avaliada, e não há suporte para a avaliação da expressão simultâneas. |
Comentários
Esse método deve retornar imediatamente após ter começado a avaliação da expressão. Quando a expressão é avaliada com êxito, um IDebugExpressionEvaluationCompleteEvent2 deve ser enviado para o IDebugEventCallback2 retorno de chamada de evento conforme fornecido por meio de IDebugProgram2::Attach ou IDebugEngine2::Attach.
Exemplo
O exemplo a seguir mostra como implementar este método para um simples CExpression objeto que implementa o IDebugExpression2 interface.
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;
}