Asynchronous lambdas
Asynchronous lambdas are useful if you want to pass a potentially long-running delegate into a method. If the method accepts a Func<Task>, you can serve it with an asynchronous lambda and take advantage of the benefits of asynchrony.
Example with Microsoft's Dataflow API.
Synchronous lambdas
var block = new ActionBlock<int> (
i =>
{
Thread.Sleep(1000);
Console.Write($"{i} ");
},
new ExecutionDataflowBlockOptions { MaxDegreeOfParallelism = 10 }
);
Asynchronous lambdas
var block = new ActionBlock<int> (
async i =>
{
await Task.Delay (1000);
Console.Write($"{i} ");
},
new ExecutionDataflowBlockOptions { MaxDegreeOfParallelism = 10 }
);