Chapter 15 focused on managing threads and synchronizing the data that the threads share. As developers write more multithreaded code, a common set of scenarios and programming patterns for handling those scenarios emerges. The key scenarios relate to notifications of when a thread completes and notifications about the progress on the threads status. In addition, there is some built-in C# functionality for calling methods asynchronously, regardless of whether their signatures match THReadStart. Most importantly, going with built-in patterns like this significantly reduces the effort in programming to solve these types of scenarios from scratch.
The two patterns specifically designed for these scenarios are the asynchronous results pattern and the background worker pattern, and this chapter investigates both. This chapter breaks down how to code these patterns into a step-by-step process, and it points out some important characteristics of Windows Forms programming.