Я видел множество примеров того, как использовать Observable.FromAsyncPattern () в Rx Framework для упрощения асинхронных вызовов, но я использую интерфейс, который не использует стандартный шаблон Async IAsyncResult BeginXXX / EndXXX (IAsyncResult), так что это не работает для меня.
Библиотека, с которой я работаю, предоставляет асинхронные функции с паттерном обратного вызова:
void GetAllObjects(Action<List<Object>> callback)
В идеальном мире я хотел бы превратить это:
var isLoadingUsers = true;
var isLoadingSystems = true;
var isLoadingCustomers = true;
var isLoadingRules = true;
mClient.GetAllUsers(UsersCallback);
mClient.GetAllCustomers(CustomersCallback);
mClient.GetAllRules(RulesCallback);
// set the IsLoadingXXX variables to false in callbacks
// once all are false
mClient.GetAllSystems(SystemsCallback);
примерно так:
var o = Observable.ForkJoin(
Observable.Start(GetAllUsers()),
Observable.Start(GetAllCustomers()),
Observable.Start(GetAllRules())
).Finally(() => GetAllSystems);
Как можно превратить этот шаблон в нечто, что возвращает IObservable?