Running Asynchronous Code Using Tasks
The Task
class is used to execute blocks of code asynchronously. Its usage has been somewhat superseded by the newer async
and await
keywords, but this section will cover the basics of creating tasks as they tend to be pervasive in larger or mature C# applications and form the backbone of the async
/await
keywords.
In C#, there are three ways to schedule asynchronous code to run using the Task
class and its generic equivalent Task<T>
.
Creating a New Task
You'll start off with the simplest form, one that performs an operation but does not return a result back to the caller. You can declare a Task
instance by calling any of the Task
constructors and passing in an Action
based delegate. This delegate contains the actual code to be executed at some point in the future. Many of the constructor overloads allow cancellation tokens and creation options to further control how the Task
runs.
Some of the commonly used constructors are...