In the previous chapter, we introduced asynchronous programming practices and solutions available in C#, even prior to .NET Core. We also discussed scenarios where asynchronous programming can be handy, and where it should be avoided.
In this chapter, we will dig more deeply into asynchronous programming, and will introduce two keywords that make writing asynchronous code very easy. We will be covering the following topics in this chapter:
- Introduction to async and await
- Async delegates and lambda expressions
- The Task-Based Asynchronous Pattern (TAP)
- Exception handling in asynchronous code
- Async with PLINQ
- Measuring async code performance
- Guidelines for using async code
Let's start with an introduction to the async and await keywords, which were first introduced in C# 5.0 and adopted in .NET Core as well.
...