I have the Loop which generates tasks.
Code:
Task task = null;
foreach (Entity a in AAAA)
{
// create the task
task = new Task(() => {
myMethod(a);
}, Token, TaskCreationOptions.None);
task.Start();
}
As you can see in each iteration task object has new initialization (..new Task(() =>..) How can I know that all tasks done?
I f you replace this with a
Parallel.ForEach(..., () => myMethod(a), ...)
Then you get an automatic Wait on all tasks at the end of the ForEach.
And maybe run the ForEach from a separate Task.
var allTasks = new List<Task>();
foreach (Entity a in AAAA)
{
// create the task
task = new Task(() => {
myMethod(a);
}, Token, TaskCreationOptions.None);
// Add the tasks to a list
allTasks.Add(task);
task.Start();
}
// Wait until all tasks are completed.
Task.WaitAll(allTasks.ToArray());
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With