等待异步回调结果

时间:2010-10-06 18:32:51

标签: .net silverlight asynchronous httpwebrequest httpwebresponse

我正在执行一个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(),但它没有解决问题。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

你可以这样做:

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

在这种特殊情况下,我使用的是WaitOne()的超时版本,如果等待成功则返回true。您可以使用任何WaitOne()重载。