我正在执行一个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 :(得分:1)
你可以这样做:
IAsyncResult ar = request.BeginGetResponse(new AsyncCallback(Callback), request);
ar.AsyncWaitHandle.WaitOne(5000);
在这种特殊情况下,我使用的是WaitOne()
的超时版本,如果等待成功则返回true。您可以使用任何WaitOne()
重载。