Итак, я читаю о 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 к результату первого возвращенного вызова.
Я уверен, что это что-то глупое, но я еще не смог это понять.
Спасибо :)