In this chapter, we have looked at ways to wait on a task, cancel, chain, and perform exception handling with tasks. We have now covered all of the aspects that need to work with tasks in the TPL and the techniques needed to handle all of the scenarios your design might encounter.
We encourage you to further explore the techniques presented in this chapter and explore the world of task-based parallelism. The days of working directly with threads and the
BackgroundWorker component will soon become a distant memory.
These last two chapters have been an overview of TPL and task-based parallelism. In the next chapter, we will cover data-based parallelism and working with data collections in a concurrent manner.