Threading is a topic that many people avoid because on the surface it seems intimidating. There are a lot of terms like mutex, semaphore, synchronization, and so on that might be unfamiliar to developers. Hopefully, this chapter has demystified multithreaded programming to the point where it is no longer intimidating.
The key to developing high-quality multithreaded applications lies in knowing when you should create thread-safe synchronized blocks and when you can get by with a ReaderWriterLock, and to make use of mutexes, monitors, semaphores, and the various properties and methods of the Thread class itself to create an application that remains responsive and reliable even while performing complex, resource-intensive tasks.
Throughout this book, you will learn many techniques for working with data, working with ASP.NET web applications, working with Windows Forms applications, and much more. As you learn these new techniques, you may want to return to this chapter and see how you can apply your new knowledge of the .NET Framework's multithreading capabilities to increase the performance and responsiveness of your application.