This book addresses the fundamental units of Windows and .NET programming - threads. A strong understanding of the role threads play in program execution, how multiple threads can interact in order to make efficient programs, and the pitfalls to beware of when developing multithreaded applications, are all core to a developer's ability to develop effective C# programs. This book will cover how .NET applications are executed, the life cycle of a thread in .NET, how the .NET Framework uses threads, how threads work in an event-driven environment, how we can avoid race conditions and deadlocks, how the activity of multiple threads can be synchronized, and how to debug multithreaded applications. We finish it off by describing the creation of a multithre...