Y a-t-il un moyen plus court d'attendre la fin de plusieurs threads? Peut-être utiliser ContinueWhenAll ... mais je ne veux pas exécuter le reste de mon code async.Attente de l'achèvement de toutes les tâches à l'aide de la bibliothèque parallèle de tâches dans .NET 4.0
List<object> objList = // something
List<Task> taskHandles = new List<Task>();
for(int i = 0; i < objList.Count; i++) {
taskHandles.Add(Task.Factory.StartNew(() => { Process(objList[i]); }));
}
foreach(Task t in taskHandles) { t.Wait(); }
DoSomeSync1();
..
DoSomeSync2();
..
DoSomeSync3();
..
// I could have used ContinueWhenAll(waitHandles, (antecedent) => { DoSomeSync...; });
// but I'd rather not have to do that.
// It would be nice if I could have just done:
Parallel.ForEach(objList, (obj) => { Process(obj); }).WaitAll();
// or something like that.
Je veux m'assurer que tous les objets sont finis de traitement avant de continuer avec les appels DoSomeSync. –
@Jeff: Oui, je le pensais. Un Parallel.For() n'a pas besoin de WaitAll. –
Je vois ce que vous voulez dire maintenant - y a-t-il une page qui documente cela? Je n'ai pas pu en trouver. –