I’ve been using Reactive Extensions for .NET to attempt to wait until multiple async calls to load data are completed in order to perform some actions on all the data at once.
ergo, if you create some Observables using FromEvent and then attempt to join them with ForkJoin like this
1 var result = Observable.ForkJoin(oFromEvent1, oFromEvent2); 2 result.Subscribe(eventArgs => 3 { 4 // do stuff with eventArgs[0] & eventArgs[1] – never gets called :-( 5 }
They will never get joined.
Use Zip instead.
1 var result = Observable.Zip( 2 oFromEvent1, 3 oFromEvent2, 4 (event1, event2) => new { event1, event2} 5 ); 6 7 result.Subscribe(eventArgs => 8 { 9 // do stuff with eventArgs.event1 & eventArgs.event2 10 });