Introduction to Concurrency in C# - Async and Parallelism
What you'll learn
- Use asynchronous programming in C#
- Improve the speed of your programs with parallelism
- Patterns and antipatterns of asynchronous programming and parallelism
Requirements
- Knows the basics of C# (knows about loops, methods, classes)
Description
In this course you will learn how to use asynchronous programming and parallelism in C #.
We will look at both patterns and antipatterns of concurrency. That is, we will see what things we should do, but we will also see what things we should not do.
With asynchronous programming we can:
Run a set of I / O tasks at the same time
Prevent the UI of our applications from freezing
Scale up our ASP.NET and ASP.NET Core applications
Cancel tasks so that the user does not have to wait for their completion
Implement generic retry logic
Create asynchronous streams
With parallel programming we can:
Accelerate the execution of certain algorithms
Apply transformations to a set of images in parallel
Use synchronization mechanisms to avoid race conditions
Define the maximum degree of parallelism
Configure instances of a class by threads
Use LINQ in parallel
We'll also see:
Determinism vs Non-Determinism
Handling errors in asynchronous programming
Using Task.WhenAll to wait for the execution of multiple tasks
Reporting progress of multiples tasks
Retry pattern for handling momentaneous errors
Understanding and consuming ValueTask
Using Asynchronous streams
What does it mean for an app to be deadlocked
We will learn all of this in this course!
Who this course is for:
- C# developers who want to use asynchronous programming and parallelism in an effective way
Instructor
I am a software engineer with 12 years of experience. I am also a Microsoft MVP. My specialties include Web Development, ASP.NET Core & MVC, Entity Framework Core, SQL Server, Javascript, Angular, WPF, JAVA, Android Mobile Development and Xamarin. I am a passionate coder that loves problem solving and automating tasks. I believe in clean code and the importance of good software architecture. With a passion on learning and teaching also.