1

我正在執行一個http web請求,它異步地從服務器獲取響應。我希望直接對結果執行操作,並且不希望在此期間運行任何代碼。它必須是異步的原因是我正在編寫一個silverlight應用程序。等待異步回調結果

下面的代碼片段

{ 
.... 

request.BeginGetResponse(new AsyncCallback(Callback), request); 

//Some UI Code to be done after the callback 
} 

private void Callback(IAsyncResult asynchronousResult) 
{ 
//Code needed to be done before the UI code 
} 

但只要它達到它跳過回調並返回給調用函數的異步請求。

有什麼辦法可以等待異步請求。我曾嘗試在異步結果上使用WaitOne(),但它沒有解決問題。

感謝您的幫助!

+0

問題真的是你只是想等待響應時停止用戶交互?這是Silverlight最常見的情況。 – 2010-10-06 19:02:48

+0

是的,這是我想要的...發送請求後,我想要做的下一件事是使用回調的結果。 – Roshan 2010-10-06 20:54:27

回答

1

你可以這樣做:

IAsyncResult ar = request.BeginGetResponse(new AsyncCallback(Callback), request); 
ar.AsyncWaitHandle.WaitOne(5000); 

在這種特殊情況下,我使用的WaitOne()超時的版本,返回true,如果等待成功。儘管如此,你可以使用任何的WaitOne()重載。

+0

它仍然給出相同的結果。它永遠不會回到回調函數。它只是繼續調用函數中的語句。 – Roshan 2010-10-06 21:09:21