次の方法で共有


IDebugExpression2::EvaluateAsync

このメソッドは、式を非同期的に評価します。

構文

int EvaluateAsync(
    enum_EVALFLAGS       dwFlags,
    IDebugEventCallback2 pExprCallback
);

パラメーター

dwFlags
[入力] 式の評価を制御する EVALFLAGS 列挙型のフラグの組み合わせ。

pExprCallback
[入力] このパラメーターは常に null 値です。

戻り値

成功した場合は、S_OK を返します。それ以外の場合は、エラー コードを返します。 一般的なエラー コードは次のとおりです。

エラー 説明
E_EVALUATE_BUSY_WITH_EVALUATION 現在、別の式が評価中であり、式の同時評価はサポートされていません。

解説

このメソッドは、式の評価を開始した直後に返される必要があります。 式が正常に評価された場合は、Attach または Attach によって指定される IDebugEventCallback2 イベント コールバックに IDebugExpressionEvaluationCompleteEvent2 を送信する必要があります。

次の例は、IDebugExpression2 インターフェイスを実装する単純な CExpression オブジェクトに対してこのメソッドを実装する方法を示しています。

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;
}

関連項目