You just waited for t , not to continue it. That is why this continuation will continue in the future. If it was not for Console.Read , it will never start until the process exits.
Task.WaitAll(t) equivalent to t.Wait() (which you should use instead, because it is more idiomatic).
Waiting for all continuations (possibly recursively) will lead to unintuitive behavior and lead to nonlocal effects. Remote parts of the program may affect your code.
source share