Task.WaitAll doesn't wait for child task?

.net, c#, c#-4.0, multithreading, task-parallel-library

Solution

I think you are allocating your Tasks as:

Tasks[] tasks = new Task[ _noOfThreads];

Change your code to be:

Tasks[] tasks = new Task[count];

for (int index = 0; index < count; index++)
{

    if (index < _noOfThreads)
         tasks[index] = Task.Factory.StartNew(somedelegate);
    else
         tasks[index] = tasks[index % _noOfThreads].ContinueWith(task => { foo.bar(); }, 
                            TaskContinuationOptions.AttachedToParent);
}
Task.WaitAll(tasks);

Give it a try! Good Luck :)

Problem

Hello I have `_noOfThreads` as defined tasks to run at a time. So I keep continuing the Tasks by using `%` operator and at the end of the loop I have `Tasks.WaitAll`. This is the code snippet. ``` for (int index = 0; index < count; index++) { if (index < _noOfThreads) tasks[index] = Task.Factory.StartNew(somedelegate); else tasks[index % _noOfThreads].ContinueWith(task => { foo.bar(); }, TaskContinuationOptions.AttachedToParent); } Task.WaitAll(tasks); ``` However, I notice it doesn't wait for child tasks to complete. As soon as the parent tasks complete, the next line after `Task.WaitAll` gets executed. How do I change this code to wait for child tasks also?

Original source

Related problems