IDebugExpression2::EvaluateAsync
Diese Methode wertet den Ausdruck asynchron aus.
HRESULT EvaluateAsync (
EVALFLAGS dwFlags,
IDebugEventCallback2* pExprCallback
);
int EvaluateAsync(
enum_EVALFLAGS dwFlags,
IDebugEventCallback2 pExprCallback
);
Parameter
dwFlags
[in] Eine Kombination von Flags aus der EVALFLAGS-Enumeration, die Ausdrucksauswertung steuern.pExprCallback
[in] Dieser Parameter ist immer ein NULL-Wert.
Rückgabewert
Bei Erfolg gibt S_OKzurück. Andernfalls wird ein Fehlercode zurückgegeben. Ein typischer Fehlercode ist:
Fehler |
Beschreibung |
---|---|
E_EVALUATE_BUSY_WITH_EVALUATION |
Ein anderer Ausdruck wird nur ausgewertet, und gleichzeitige Ausdrucksauswertung wird nicht unterstützt. |
Hinweise
Diese Methode sollte sofort zurückkehren, nachdem sie die Ausdrucksauswertung gestartet wurde. Wenn der Ausdruck erfolgreich ausgewertet wird, muss IDebugExpressionEvaluationCompleteEvent2 an den Rückruf IDebugEventCallback2-Ereignis gesendet werden, wie durch IDebugProgram2::Anfügen oder IDebugEngine2::Anfügenangegeben.
Beispiel
Im folgenden Beispiel wird veranschaulicht, wie diese Methode für ein einfaches CExpression-Objekt implementiert, das die IDebugExpression2-Schnittstelle implementiert.
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;
}