Books & Videos

Table of Contents

  1. Chapter 1 Introduction

    1. Asynchronous Programming

    2. What’s So Great About Asynchronous Code?

    3. What Is Async?

    4. What Async Does

    5. Async Doesn’t Solve Everything

  2. Chapter 2 Why Programs Need to Be Asynchronous

    1. Desktop User Interface Applications

    2. Web Application Server Code

    3. Silverlight, Windows Phone, and Windows 8

    4. Parallel Code

    5. An Example

  3. Chapter 3 Writing Asynchronous Code Manually

    1. Some Asynchronous Patterns Used in .NET

    2. The Simplest Asynchronous Pattern

    3. An Introduction to Task

    4. The Problem with Manual Asynchrony

    5. Converting the Example to Use Manual Asynchronous Code

  4. Chapter 4 Writing Async Methods

    1. Converting the Favicon Example to Async

    2. Task and await

    3. Async Method Return Types

    4. Async, Method Signatures, and Interfaces

    5. The return Statement in Async Methods

    6. Async Methods Are Contagious

    7. Async Anonymous Delegates and Lambdas

  5. Chapter 5 What await Actually Does

    1. Hibernating and Resuming a Method

    2. The State of the Method

    3. Context

    4. Where await Can’t Be Used

    5. Exception Capture

    6. Async Methods Are Synchronous Until Needed

  6. Chapter 6 The Task-Based Asynchronous Pattern

    1. What the TAP Specifies

    2. Using Task for Compute-Intensive Operations

    3. Creating a Puppet Task

    4. Interacting with Old Asynchronous Patterns

    5. Cold and Hot Tasks

    6. Up-Front Work

  7. Chapter 7 Utilities for Async Code

    1. Delaying for a Period of Time

    2. Waiting for a Collection of Tasks

    3. Waiting for Any One Task from a Collection

    4. Creating Your Own Combinators

    5. Cancelling Asynchronous Operations

    6. Returning Progress During an Asynchronous Operation

  8. Chapter 8 Which Thread Runs My Code?

    1. Before the First await

    2. During the Asynchronous Operation

    3. SynchronizationContext in Detail

    4. await and SynchronizationContext

    5. The Lifecycle of an Async Operation

    6. Choosing Not to Use SynchronizationContext

    7. Interacting with Synchronous Code

  9. Chapter 9 Exceptions in Async Code

    1. Exceptions in Async Task-Returning Methods

    2. Unobserved Exceptions

    3. Exceptions in Async void Methods

    4. Fire and Forget

    5. AggregateException and WhenAll

    6. Throwing Exceptions Synchronously

    7. finally in Async Methods

  10. Chapter 10 Parallelism Using Async

    1. await and locks

    2. Actors

    3. Using Actors in C#

    4. Task Parallel Library Dataflow

  11. Chapter 11 Unit Testing Async Code

    1. The Problem with Unit Testing in Async

    2. Writing Working Async Tests Manually

    3. Using Unit Test Framework Support

  12. Chapter 12 Async in ASP.NET Applications

    1. Advantages of Asynchronous Web Server Code

    2. Using Async in ASP.NET MVC 4

    3. Using Async in Older Versions of ASP.NET MVC

    4. Using Async in ASP.NET Web Forms

  13. Chapter 13 Async in WinRT Applications

    1. What Is WinRT?

    2. IAsyncAction and IAsyncOperation<T>

    3. Cancellation

    4. Progress

    5. Providing Asynchronous Methods in a WinRT Component

  14. Chapter 14 The Async Compiler Transform—in Depth

    1. The stub Method

    2. The State Machine Struct

    3. The MoveNext Method

    4. Writing Custom Awaitable Types

    5. Interacting with the Debugger

  15. Chapter 15 The Performance of Async Code

    1. Measuring Async Overhead

    2. Async Versus Blocking for a Long-Running Operation

    3. Optimizing Async Code for a Long-Running Operation

    4. Async Versus Manual Asynchronous Code

    5. Async Versus Blocking Without a Long-Running Operation

    6. Optimizing Async Code Without a Long-Running Operation

    7. Async Performance Summary