Дождаться результата асинхронного обратного вызова - PullRequest
1 голос
/ 06 октября 2010

Я выполняю веб-запрос http, который асинхронно получает ответ от сервера.Я хочу выполнить действия с результатом напрямую и не хочу, чтобы в это время выполнялся какой-либо код.Причина, по которой он должен быть асинхронным, заключается в том, что я пишу приложение 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 Ответ

1 голос
/ 07 октября 2010

Вы можете сделать это:

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

В данном конкретном случае я использую версию WaitOne() с тайм-аутом, которая возвращает true, если ожидание прошло успешно. Вы можете использовать любую из WaitOne() перегрузок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...