In one of MVA videos i saw next construction:
static void Main(string[] args)
{
Action testAction = async () =>
{
Console.WriteLine(\"In\");
In order for something to be awaited, it has to be awaitable. As void is not so, you cannot await on any Action delegate.
An awaitable is any type that implements a GetAwaiter method, which returns a type that implements either INotifyCompletion or ICriticalNotifyCompletion, like Task and Task, for example.
If you want to wait on a delegate, use Func, which is an equivalent to a named method with the following signature:
public Task Func()
So, in order to await, change your method to:
static void Main(string[] args)
{
Func testFunc = async () =>
{
Console.WriteLine("In");
await Task.Delay(100);
Console.WriteLine("First delay");
await Task.Delay(100);
Console.WriteLine("Second delay");
};
}
And now you can await it:
await testFunc();