¿Cuándo comienza realmente una tarea?
public void DoSomething() { Task myTask = DoSomethingAsync(); Task.WaitAll(new[] { myTask }, 2000); } public async Task DoSomethingAsync() { await SomethingElse(); } ¿Comienza inmediatamente al inicializarlo en Task myTask = DoSomethingAsync(); o comienza cuando dice que lo espere en Task.WaitAll(new[] { myTask }, 2000); ?
Llamar a un método async devuelve una tarea activa , una tarea que ya se inició. Por lo tanto, no es necesario un código real para forzar su ejecución.
Según MSDN ( gracias a Stephen Cleary ), el patrón TAP (Task-based Asynchronous Pattern) requiere que las tareas devueltas estén activas . Eso significa que todas las tareas, excepto las creadas con new Task , estarán activas.
Del artículo referenciado:
Las tareas creadas por los constructores de
Taskpúblicas se denominan tareas frías... Todas las demás tareas comienzan su ciclo de vida en un estado activo.