así me dijeron recientemente que la forma en que estaba usando mi .ContinueWith para las tareas no era la forma correcta de utilizarlos. Todavía tengo que encontrar pruebas de esto en Internet, así que les pregunto a ustedes y veo cuál es la respuesta. Aquí está un ejemplo de cómo uso .ContinueWith:prevTask.Wait() recomendado para ser utilizado con ContinueWith (de la biblioteca de tareas)?
public Task DoSomething()
{
return Task.Factory.StartNew(() =>
{
Console.WriteLine("Step 1");
})
.ContinueWith((prevTask) =>
{
Console.WriteLine("Step 2");
})
.ContinueWith((prevTask) =>
{
Console.WriteLine("Step 3");
});
}
Ahora sé que esto es un ejemplo sencillo y va a correr muy rápido, pero sólo asumirá cada tarea hace alguna operación más larga. Entonces, lo que me dijeron es que en .ContinueWith, necesitas decir prevTask.Wait(); de lo contrario, podría hacer el trabajo antes de que termine la tarea anterior. ¿Es eso posible? Supuse que mi segunda tarea & solo se ejecutaría una vez que finalizara su tarea anterior.
Lo que me dijeron cómo escribir el código:
public Task DoSomething()
{
return Task.Factory.StartNew(() =>
{
Console.WriteLine("Step 1");
})
.ContinueWith((prevTask) =>
{
prevTask.Wait();
Console.WriteLine("Step 2");
})
.ContinueWith((prevTask) =>
{
prevTask.Wait();
Console.WriteLine("Step 3");
});
}
No use StartNew http://blog.stephencleary.com/2013/08/startnew-is-dangerous.html –