The Core of NET, Hands-On Labs

VM02 Hands-on Lab: Asynchronous and Parallel Programming in C#

08/05/2024

8:30am - 12:30pm

Level: Intermediate

Jeremy Clark

Developer Educator

JeremyBytes.com

Asynchronous programming is a critical skill in C#, especially since so many of the built-in libraries are asynchronous. But async programming brings its own set of issues. In this workshop, 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.

Objectives

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

You will learn:

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

Pre-Requisites:

  • 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.