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 awaits 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 awaits 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 awaits just plain doesn't make sense. awaits 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");
 }