Last month I spoke at nmNUG (the Northern Michigan .NET User’s Group) on the topic of multithreading.

It wasn’t my best presentation: I spoke too fast, had too many slides and not enough code, and assumed a level of existing knowledge that was too high (I had assumed that everyone had done some multithreading, but this was not the case). Even with my mistakes, though, it was still helpful for many.

Topics included an overview of IAsyncResult, challenges in correctly marshaling events, more information on SynchronizationContext than anyone wants to know ;) , and a small amount of asynchronous component design.