I believe the Reactive Extensions dramatically simplify some portions of complex, event driven programming, but the problem as a whole is not "solved".
It does handle many situations is a much cleaner, more elegant manner than previously possible. However, it does not (necessarily) always help on the generation side of some asynchronous patterns, where event driven programming is still difficult. Rx really is focused on handling the subscription side of the event, but not necessarily the producing side of the equation.
For some distinct samples, and an idea of what is being considered for future versions of C# to handle some of the more complex asynchronous models, I d recommend watching Luca Bolognese s PDC Talk. He presented some ideas the language team is working on to help on the authoring side of asynchronous development, such as an "iterator" like syntax to produce an IAsync<T>
directly, with language features to support the generation of the events.