Как использовать веб-сервис придерживается асинхронного шаблона на основе событий? - PullRequest
1 голос
/ 09 апреля 2010

Я следую примеру от

http://msdn.microsoft.com/en-us/library/8wy069k1.aspx

для использования веб-службы, реализованной (сторонней организацией) с использованием Асинхронного шаблона на основе событий .

Однако моей программе нужно сделать несколько вызовов на DoStuffAsync(), следовательно, будет возвращено столько же DoStuffCompleted. Я выбрал перегрузку, которая принимает дополнительный параметр - Object userState, чтобы различать их.

Мой первый вопрос: Допустимо ли приведение GUID к объекту, как показано ниже, где GUID используется для генерации уникального идентификатора задачи?

Object userState = Guid.NewGuid();

Во-вторых, нужно ли создавать новый поток для каждого вызова DoStuffAsync(), так как я вызываю его несколько раз?

Кроме того, было бы неплохо иметь несколько онлайн-примеров или учебных пособий на эту тему. (Я весь день гуглял по ней и ничего не получал)

Большое спасибо

Новый вопрос: Могу ли я похоронить вызов делегата обратно в AsyncCompletedEventArgs.UserState? Только что узнал, что мне нужен обратный звонок вызывающей стороне, чтобы сделать последствия ... упс!

1 Ответ

0 голосов
/ 09 апреля 2010

Передача Guid звучит нормально, пока вы сохраняете ссылку, поэтому, когда метод Aync завершает работу, вы знаете, как поместить его в правильный контекст.

Метод Async выполняет за вас потоки. Не создавайте другой поток, если вам не нужен один поток, который выполняет все ваши асинхронные вызовы. Но я бы посоветовал заставить его работать, прежде чем делать что-то подобное. Создайте его пошагово.

...