@felix9: It still boggles my brain on how complicated something as simple as reactive programming can get.
I have to think, code, rethink, code, rethink, code, test, rethink, code, just to get the simplest scenario's to work. I feel I'm missing something, some trick, some common approach, maybe some more XML comments on the Rx Extensions methods would be helpfull.
It feels like you have to know Rx inside out to just get started with it, to me that is shamefull because I believe it's one of the most important discoveries of our time (yes, I really really mean that).
I absolutely love Rx, I think it's the missing LINQ (hehe) in programming today. And people say Microsoft doesnt innovate
In a previous thread I asked why all events could not be replaced with observables, as events are an obvious hack , Bart stated that it would be too expensive because per event we would have an instance of an observable. Loading the .Net framework into memory would then hog too much memory.
I've come up with what I think is a solution.
When currently you raise an event, you create an OnSomeEvent method, wich checks if the actual event is not null and then raises the event. We can do something simular with Rx. Create an private Subject<T> expose it as an property of the type IObservable<T> with only a getter. In the getter do lazy activation if the subject is null. In the OnSomeEvent check if the subject is not null and call an OnNext.
I'm still strugling with time based operations myself. In my PullToRefresh panel, I need some timeout wich is cancellable. I solved it using pattern recognition, but I think a more elegant solution is out there. So can't wait to see what improvements this release has.
Thanks for this Bart, your poster is going above my bed (if my wife let's me)!