On m'a dit récemment que la façon dont j'utilisais mes .ContinueWith pour les tâches n'était pas la bonne façon de les utiliser. Je n'ai pas encore trouvé de preuve de cela sur Internet, alors je vais vous demander votre avis et voir quelle est la réponse. Voici un exemple de la façon dont j'utilise les .ContinueWith :
public Task DoSomething()
{
return Task.Factory.StartNew(() =>
{
Console.WriteLine("Step 1");
})
.ContinueWith((prevTask) =>
{
Console.WriteLine("Step 2");
})
.ContinueWith((prevTask) =>
{
Console.WriteLine("Step 3");
});
}
Je sais qu'il s'agit d'un exemple simple et qu'il va s'exécuter très rapidement, mais supposez que chaque tâche effectue une opération plus longue. Ce qu'on m'a dit, c'est que dans le .ContinueWith, il faut dire prevTask.Wait() ; sinon, on pourrait effectuer un travail avant que la tâche précédente ne se termine. Est-ce vraiment possible ? J'ai supposé que mes deuxième et troisième tâches ne s'exécuteraient qu'une fois la tâche précédente terminée.
On m'a dit comment écrire le code :
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");
});
}