Так что я читаю на Rx и с трудом справляюсь с этим.У меня есть приложение Silverlight, которое должно сделать, скажем, 6 вызовов определенной службы асинхронно.В старые времена мы справлялись с этим, совершая вызовы и запрашивая токен userState / token, чтобы сопоставить ответ с запросом, поскольку они не гарантированно возвращаются в том порядке, в котором мы их вызвали.Однако я подозреваю, что Rx справляется с этим гораздо более элегантно.Но я не могу заставить его работать.Вот что у меня есть до сих пор ...
myCollection.Add(new myObject(1));
myCollection.Add(new myObject(2));
myCollection.Add(new myObject(3));
myCollection.Add(new myObject(4));
myCollection.Add(new myObject(5));
myCollection.Add(new myObject(6));
foreach (var myItem in myCollection)
{
var myObservable = Observable.FromEventPattern<MyServiceMethodCompletedEventArgs>
(
f => myServiceClient.MyServiceMethodCompleted += f,
f => myServiceClient.MyServiceMethodCompleted -= f
).Take(1).ObserveOn(SynchronizationContext.Current);
myObservable.Subscribe
(
s =>
{
if (s.EventArgs.Error == null)
{
myItem.MyProperty = s.EventArgs.Result;
}
}
);
myServiceClient.MyServiceMethodAsync(myItem);
}
Я надеюсь, что вы видите, чего я пытаюсь достичь здесь ...
Все, что я в итоге получаю, это все myObject устанавливается на результат первого вызова, который возвращает.
Я уверен, что это что-то глупое, но я пока не смог понять это.
Спасибо:)