async Task() not returning straight away when not using await
Clash Royale CLAN TAG #URR8PPP async Task<T>() not returning straight away when not using await If I have the following function public async Task<bool> Foo() { // call many async functions await Bar1().ConfigureAwait(false); await Bar2().ConfigureAwait(false); return await Bar3().ConfigureAwait(false); } If I call the function above var t1 = Foo(); var t2 = Foo(); ... await Task.WhenAll(t1, t2).ConfigureAwait(false); t2 will not execute until t1 completes, (so calling WaitAll is a bit pointless). WaitAll But if I call ... var t1 = Task.Run( async () => await Foo().ConfigureAwait(false)); var t2 = Task.Run( async () => await Foo().ConfigureAwait(false)); ... await Task.WhenAll(t1, t2).ConfigureAwait(false); t1 and t2 return immediately... And now if I run ... ... var t1 = Task.Run( () => Foo()); var t2 = Task.Run( () => Foo()); ... await Task.WhenAll(t1, t2).ConfigureAwait(false); t1 and t2 also return immediately... Why does Foo() not return task immed...