Возвращаемое значение из асинхронного вызова веб-службы

Я использую веб-службы ASMX в VB.Net в VS 2005. Я вызываю метод функции в веб-службе, который возвращает истинное или ложное значение. Это отлично работает, если я вызываю веб-метод синхронно, но если я хочу вызвать метод асинхронно, функция возвращается к подпрограмме, и возвращаемое значение отсутствует; поэтому я не могу сказать, является ли результат вызова истинным или ложным. Есть ли способ сделать асинхронный вызов и получить истинный или ложный результат (возможно, используя объект userState)?

Например:

Dim MyResult as Boolean = MyService.GetResult(10)
Dim MyResult as Boolean = MyServer.GetResultAsync(10) 

Это не работает, компилятор жалуется: «Выражение не создает значение»


person OneSource    schedule 13.08.2009    source источник


Ответы (2)


Вы не говорите, какое приложение вы используете, но взгляните на Как реализовать клиент асинхронной веб-службы, управляемой событиями, с помощью ASP.NET 2.0.

person John Saunders    schedule 13.08.2009
comment
К вашему сведению, я вызываю веб-службу из приложений WinForms, а не из ASP.Net. - person OneSource; 13.08.2009
comment
Затем просмотрите предыдущую статью перед статьей об ASP.NET. - person John Saunders; 13.08.2009
comment
Спасибо Джон, как раз то, что я искал! - person OneSource; 13.08.2009

В прокси-классе, который VS создает для вас, должно существовать что-то похожее на BeginGetResult - этот метод возвращает интерфейс IAsyncResult - с их помощью вы можете определить, когда выполнение выполнено. После этого вы получите значение.

person Dewfy    schedule 13.08.2009
comment
Begin*/End* больше не нужны в его ситуации с новой моделью, управляемой событиями, представленной в .NET 2.0. - person John Saunders; 13.08.2009