Всегда ли Service
один и тот же экземпляр?Если это так, вы столкнетесь со всеми видами сумасшествия, когда GetPageCompleted
события будут обрабатываться FromEvent
, созданным другим вызовом (с разными аргументами), что объясняет, почему ваши результаты одинаковы для всех методовкоторые были вызваны в одно и то же время.
Вы можете обойти эту конкретную проблему, используя методы Begin / End, хотя у вас все еще могут возникать проблемы с конфликтами в базовом соединении.
public void GetPage(long pageId, Action<PageDTO> observer)
{
Observable.FromAsyncPattern<long, PageDTO>(
service.BeginGetAwards, service.EndGetAwards)(pageId)
.ObserveOnDispatcher() // controls which thread the observer runs on;
.Subscribe(observer, HandleError);
}