What this book covers
Chapter 1, Managed Threading Concepts, covers the basics of working with managed threading in .NET. We will discuss how to create and destroy threads, handle exceptions, synchronize data, and the objects provided by .NET to handle background operations. You will gain a basic understanding of how threads can be managed in a .NET application. Practical examples in this chapter will illustrate how to use managed threading in C# projects.
Chapter 2, Evolution of Multithreaded Programming in .NET, introduces some of the concepts and features that will be explored in more depth in later chapters, including async/await, concurrent collections, and parallelism. You will learn how their options are expanded when selecting how to approach concurrency in applications.
Chapter 3, Best Practices for Managed Threading, covers some best practices when it comes to integrating managed threading concepts. We will cover important concepts such as static data, deadlocks, and exhausting managed resources. These are all areas that can lead to unstable applications and unexpected behavior. You will be given practical advice to avoid these pitfalls.
Chapter 4, User Interface Responsiveness with Threading, explains how to use ThreadPool in .NET. The real-world examples in this chapter will give you valuable options for ensuring UI responsiveness in your .NET applications.
Chapter 5, Asynchronous Programming with C#, explains asynchronous programming in C# and explores the best use of tasks in .NET.
Chapter 6, Parallel Programming Concepts, delves deeper into the Task Parallel Library (TPL) and tasking concepts.
Chapter 7, Task Parallel Library (TPL) and Dataflow, introduces the TPL Dataflow Library and illustrates some common patterns for its use through in-depth examples.
Chapter 8, Parallel Data Structures and Parallel LINQ (PLINQ), explores some of .NET’s useful features, including Parallel LINQ (PLINQ). Follow along with some practical examples of PLINQ in C#.
Chapter 9, Working with Concurrent Collections in .NET, dives deeper into some of the concurrent collections that help provide data integrity when using concurrency and parallelism in your code.
Chapter 10, Debugging Multithreaded Applications with Visual Studio, teaches you how to use the power of Visual Studio when debugging multithreaded .NET applications. This chapter will explore the tools in detail through concrete examples.
Chapter 11, Canceling Asynchronous Work, dives deeper into the different methods available to cancel concurrent and parallel work with .NET. You will gain a deep understanding of how to safely cancel asynchronous work.
Chapter 12, Unit Testing Async, Concurrent, and Parallel Code, provides some concrete advice and real-world examples of how developers can unit test code that employs multithreaded constructs. These examples will illustrate how unit tests can still be reliable while covering code that performs multithreaded operations.