This async method lacks 'await' operators and will run synchronously
if you are overriding and async method with a sync method you can :
await Task.Run(() => [YOUR SYNC METHOD]);
The async
keyword, by itself, doesn't really do much. Remove it from your code and your code will act exactly the same.
What does async
do?
- It changes what's valid inside of the method, specifically it allows you to use the
await
keyword - In turn, it means that the body of the method will be transformed, based on the
await
s that are present in the body of the method. - And if the method returns a value, the method is also transformed to wrap the return value in a
Task
.
However, if you a) Don't have any await
s in your method body and b) are void
returning, then nothing special will be achieved. The compiler warning does try to be clear about this - an async
method without any await
s just plain doesn't make sense. await
s are the more important part of this feature.
You have used 'async
' keyword with method which indicates that Work1(),Work2() and Work3() methods are executed asynchronously,but you have not used 'await' keyword.So it executed as synchronously.Use 'await
' keyword if you want to execute it asynchronously.
static async void Work1()
{
Console.WriteLine("10 started");
await Task.Delay(10000);
Console.WriteLine("10 completed");
}
static async void Work2()
{
Console.WriteLine("3 started");
await Task.Delay(3000);
Console.WriteLine("3 completed");
}
static async void Work3()
{
Console.WriteLine("5 started");
await Task.Delay(5000);
Console.WriteLine("5 completed");
}