What are ASYNC and AWAIT in C#? Asynchronous Programming Tutorial

preview_player
Показать описание

What are ASYNC and AWAIT in C#? Asynchronous Programming Tutorial

The world of asynchronous programming can be daunting at first. Using async and await in C# is a proven way to write code that does not block the main thread, which means it will scale better and be responsive even when dealing with long-running tasks such as IO operations. This video will cover what ASYNC and AWAIT are, how they work, and best practices for using them together.

Asynchronous programming

Asynchronous programming is a means of parallel programming in which a unit of work runs separately from the main application

Normally, any code runs straight along, with only one thing happening at once(line by line). If a method calls another method, it has to wait for the other method to finish and return, and until that happens, the entire program is essentially stopped from the user's perspective. Even the UI would freeze and look unresponsive until the task is done.

This is where Asynchronous programming comes in handy.

Asynchronous programming is a means of parallel programming in which a unit of work runs separately from the main application.

Now when should we make our apps run tasks in parallel?

Let’s look at the following real-world scenario from the MS Doc.

Imagine we are cooking breakfast.

We want to make coffee, eggs, and bacon with some toast and jam, and some juice to wash it all down : ).

If we wait for each task to be done to move on to the next task, it will take around 30 minutes. But if you think about it, we don’t need to wait for the eggs to be done to fry the bacon!.

This is an asynchronously prepared breakfast. We can actually speed up this process and optimize it using the Asynchronous method.

Now using the Asynchronous method.

We can first pour the coffee, then start with frying the eggs and the bacon and turning on the toaster at the same time!.

Once the toast is made, we can put some jam on it, pour the juice, and the breakfast is ready!.

So tasks that do not depend on other tasks like frying the eggs and the bacon can be started together. Tasks that depend on other tasks like putting jam on toast must wait for the toasting step to be done. Of course, don’t forget to take off the eggs and bacon, so you don’t burn them ;).

This whole process will take less than 20 minutes, thanks to the Asynchronous method of preparing breakfast.

So how can we apply this approach to our programs ?.


.

tutorialsEU offers you free video tutorials about programming and development for complete beginners up to experienced programmers.
This includes C#, Unity, Python, Android, Kotlin, Machine Learning, etc.
Рекомендации по теме
Комментарии
Автор

I struggled, and I'd say that I'm still struggling with understanding of how async works. But surely I'm making progress in understanding it and this video was a big help. For me it's the best explanation of async that I've seen.

Rodioser
Автор

You should definitely not be using Thread.Sleep() inside an asynchronous method. Use Task.Delay() instead.

Felipe-mgpw
Автор

In Short

If you execute code synchronously and hit an async task, the task goes off on its own thread and does what it should. The synchronous code continues in parallel.
To wait for the task to complete and use the return value, use the await keyword.
But then you should change the original / containing method to be an async Task<> as well.
And so it ripples to sub Main.

stefanlabuschagne
Автор

The other videos on youtube explaining asynchronous programming is much more difficult to understand. But you have been able to explain this in a more simple and easy way. Thank you for making such great effort. I hope you have a great day and achieve much more success in your life being able to gain more knowledge across all areas.

kopilkaiser
Автор

For people that still dont get it, how it works codewise
basically whenever a current debug line (this is simplified) meets await keyword action is forwarded to the code straight after that function usage
which had await keyword inside it, if there is no function before that code simply waits.
when action finishes another "executor" comes back and continues execution from the place await was setlled in.
Keep in mind program can finish before that action completes so its always important to wait for the task (unless its fire and forget like write to a file in a UI app!)

frosky
Автор

Super useful tutorial! Been trying to get a grip on async for a while now, and this really helped.

GurtMan
Автор

this is the best tutorial on async and await that I have seen. Clear and consise examples given.

AllAboutDataTechnology
Автор

This kinda of tutorial should be default, it's the best one.

A lot of other tutorials abstract the lesson in 50 hundred layers of abstraction, the person that is trying to teach seems to be conflicted: should I just teach this in the best way possible or should I show off my awesome coding skills?

maiksonstrife
Автор

The key to this being good is in using a simple example. Nice job.

quicktastic
Автор

This is an excellent video. One nit: you use the word "parallel" early in the video, then again about 14 minutes in. The correct term here would be "concurrent", I believe, since it's important to distinguish between concurrent (single worker thread, async/await) and parallel (multiple worker threads, Threadpool e.g.).

stephenwood
Автор

Thank you for this excellent coding example. It’s educational how you show the most basic first and progress to a more useful example!

getsmartpaul
Автор

The async keyword DON'T specify that a method is asynchronous, it just starts the state machine for the method. In another words, the async keyword just prepare the method to do some asynchronous stuff.
You can have a method that returns a Task and are not marked with "async"

alexpato
Автор

I have a program like this:
1. Have a static string[] 'values'.
2. Task 1 is event driven, update the content of the string[] 'values' whenever condition meets.
3. Task 2 is periodically use the data from 'values' array to display status of the equipment.
Please help me how to implement this into the project.

NHGeneral
Автор

now lets get started with the course
now lets get started with the content
and now lets get started with.. the tutorial

nice poem!

BeansEnjoyer
Автор

Could asynchronous programming be used inside for loop with nested if statements or would it be useless? Thank you so much.

mermaidoasis
Автор

This video was a great help and a step up in reaching to grasp the concept of this complicated and difficult topic in C#

kopilkaiser
Автор

Goddamn, someone that finally explains it in a non flustered way. Thank you so so much!

raven.
Автор

Example is good, but the theory as explained is wrong. For example, a void method is a void method and a Task method is a method that returns a Task. Returning sth. is indeed different than returning nothing or sth empty as null.

gabrielreinfalke
Автор

Simple examples to explain with graphics helps. Great work buddy :), god bless

siddarthapal
Автор

Question: If your main thread crashes after having spawned async threads, what happens? Do the threads close? If not, what happens when they try to return their Task? Is there a way to do an elegant shutdown of all existing threads using a destructor in the parent thread?

mikicerise