The Core of .NET, Full Day Hands-On Labs

VSHOL03 Hands-On Lab: Asynchronous and Parallel Programming in C#


9:00am - 6:00pm

Level: Intermediate

Jeremy Clark

Developer Educator

Asynchronous programming is a critical skill to take full advantage of today's multi-core systems. But async programming brings its own set of issues. In this hands-on lab, we'll work through some of those issues and get comfortable using parts of the .NET Task Parallel Library (TPL).

We'll start by calling asynchronous methods using the Task Asynchronous Pattern (TAP), including how to handle exceptions and cancellation. With this in hand, we'll look at creating our own asynchronous methods and methods that use asynchronous libraries. Along the way, we'll see how to avoid deadlocks, how to isolate our code for easier async, and why it's important to stay away from "asyc void".

In addition, we'll look at some patterns for running code in parallel, including using Parallel.ForEachAsync, channels, and other techniques. We'll see pros and cons so that we can use the right pattern for a particular problem.

Throughout the day, we'll go hands-on with lab exercises to put these skills into practice.


  • Use asynchronous methods with Task and await
  • Create asynchronous methods and libraries
  • How to avoid deadlocks and other pitfalls
  • Understand different parallel programming techniques


Basic understanding of C# and object-oriented programming (classes, inheritance, methods, and properties). No prior experience with asynchronous programming is necessary; we'll take care of that as we go.

You will learn:

  • Asynchronous methods with Task and await
  • How to avoid deadlocks and other pitfalls
  • The different parallel programming techniques

Attendee Requirements:

You must provide your own laptop computer (Windows or Mac) for this hands-on lab.

All other laptop requirements will be provided to attendees 2 weeks prior to the conference.