Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu yöntem, ifadeyi zaman uyumlu olarak değerlendirir.
Sözdizimi
int EvaluateSync(
enum_EVALFLAGS dwFlags,
uint dwTimeout,
IDebugEventCallback2 pExprCallback,
out IDebugProperty2 ppResult
);
Parametreler
dwFlags
[in] EVALFLAGS numaralandırmasından ifade değerlendirmesini denetleen bayrakların birleşimi.
dwTimeout
[in] Bu yöntemden dönmeden önce beklenebilmesi için milisaniye cinsinden en uzun süre. Süresiz beklemek için kullanın INFINITE
.
pExprCallback
[in] Bu parametre her zaman null bir değerdir.
ppResult
[out] İfade değerlendirmesinin sonucunu içeren IDebugProperty2 nesnesini döndürür.
İade Değeri
Başarılı olursa döndürür S_OK
; aksi takdirde bir hata kodu döndürür. Bazı tipik hata kodları şunlardır:
Hata | Açıklama |
---|---|
E_EVALUATE_BUSY_WITH_EVALUATION | Şu anda başka bir ifade değerlendiriliyor ve eşzamanlı ifade değerlendirmesi desteklenmiyor. |
E_EVALUATE_TIMEOUT | Değerlendirme zaman aşımına uğradı. |
Açıklamalar
Zaman uyumlu değerlendirme için, değerlendirme tamamlandıktan sonra Visual Studio'ya bir olay göndermek gerekli değildir.
Örnek
Aşağıdaki örnek, IDebugExpression2 arabirimini uygulayan basit CExpression
bir nesne için bu yöntemin nasıl uygulandığını gösterir.
HRESULT CExpression::EvaluateSync(EVALFLAGS dwFlags,
DWORD dwTimeout,
IDebugEventCallback2* pExprCallback,
IDebugProperty2** ppResult)
{
// Set the aborted state to FALSE.
m_bAborted = FALSE;
// Delegate the evaluation to EvalExpression.
return EvalExpression(TRUE, ppResult);
}
HRESULT CExpression::EvalExpression(BOOL bSynchronous,
IDebugProperty2** ppResult)
{
HRESULT hr;
// Get the value of an environment variable.
PCSTR pszVal = m_pEnvBlock->GetEnv(m_pszVarName);
// Create and initialize a CEnvVar object with the retrieved value.
// CEnvVar implements the IDebugProperty2 interface.
CComObject<CEnvVar> *pEnvVar;
CComObject<CEnvVar>::CreateInstance(&pEnvVar);
pEnvVar->Init(m_pszVarName, pszVal, m_pDoc);
if (pszVal) {
// Check for synchronous evaluation.
if (bSynchronous) {
// Set and AddRef the result, IDebugProperty2 interface.
*ppResult = pEnvVar;
(*ppResult)->AddRef();
hr = S_OK;
} else {
//For asynchronous evaluation, send an evaluation complete event.
CExprEvalEvent *pExprEvent = new CExprEvalEvent(this, pEnvVar);
pExprEvent->SendEvent(m_pExprCallback, NULL, NULL, NULL);
}
} else {
// If a valid value is not retrieved, return E_FAIL.
hr = E_FAIL;
}
return hr;
}