Iterate an array of BlockingCollections
Your code has a couple of problems:


It is a void (synchronous) whose only task is to start a Task, lying to the caller since it's in fact an asynchronous Task.
You are using Task.Factory.StartNew instead of the preferred Task.Run


So, a better approach to this would be something like this:

private async Task testArrayConsuming()
{
    foreach (var x in arrayOfBlockingCollection)
    {
        await Task.Run(() =&gt;
        {
            foreach (var y in x.GetConsumingEnumerable())
            {
                Console.WriteLine(x.Element.Value.ToString());
            }
        });
    }
}


This would block execution, consuming one x at a time. If you want this to be parallel, use this instead:

private async Task testArrayConsuming()
{
    var tasks = new List&lt;Task&gt;();
    foreach (var x in arrayOfBlockingCollection)
    {
        tasks.Add(Task.Run(() =&gt;
        {
            foreach (var y in x.GetConsumingEnumerable())
            {
                Console.WriteLine(x.Element.Value.ToString());
            }
        }));
    }

    await Task.WhenAll(tasks); // wait for all of them
}