Events in .NET are a fairly simple programming model - you subscribe to an event and when it is raised your handler is called. There are two common misconceptions about .NET events though. The first is that people believe event handlers are run in a multi-threaded manner, when in fact they aren't. The second is that raising an event isn't affected by multi-threading issues, when in fact it...