Practical Rx Training - London 6-7 October 2015 Book now!

#RxNET
Version v1.0.1062.0
Preface PART 1 PART 2 PART 3 PART 4 Appendix
Getting started Sequence basics Taming the sequence Concurrency
Lee Campbell
Introduction to Rx
Kindle edition
(2012)



Practical Rx Training
London 6-7 October 2015

Presented by the author of IntroToRx.com

Book now!

Dispelling event myths

The previous parts in this book should have given you a solid and broad foundation in the fundamentals of Rx. We will use this based to learn the really fun and sometimes complex parts of Rx. Just before we do, I want to first make sure we are all on the same page and dispel some common myths and misunderstandings. Carrying these misconceptions into a world of concurrency will make things seem magic and mysterious. This normally leads to problematic code.

Event myths

Often in my career, I have found myself involved in the process of interviewing new candidates for developer roles. I have often been surprised about the lack of understanding developers had surrounding .NET events. Carrying these misconceptions into a world of concurrency will make things seem magic and mysterious. This normally leads to problematic code. Here is a short list of verifiable facts about events.

Events are just a syntactic implementation of the observer pattern
The += and -= syntax in c# may lead you to think that there is something clever going on here, but it is just the observer pattern; you are providing a delegate to get called back on. Most events pass you data in the form of the sender and the EventArgs.
Events are multicast
Many consumers can register for the same event. Each delegate (handler) will be internally added to a callback list.
Events are single threaded.
There is nothing multithreaded about an event. Each of the callback handlers are each just called in the order that they registered, and they are called sequentially.
Event handlers that throw exceptions stop other handlers being called
Since handlers are called sequentially, they are also called on the same thread that raised the event. This means that, if one handler throws an exception, there cannot be a chance for any user code to intercept the exception. This means that the remaining handlers will not be called.

Common myths about events that I have heard (or even believed at some point) include:

The silly thing about these myths is that it only takes fifteen minutes to prove them all wrong; you just open up Visual Studio or LINQPad and test them out. In my opinion, there is something satisfying about proving something you only believed in good faith to be true.


Additional recommended reading

<< Back to : Appendix Moving on to : Disposables>>