Parallelization of multiple operations and concatenation of results
===

I'd like to implement the following in a Silverlight application using Task Parallel Library. I have plenty of threading knowledge but none on TPL so this seems a good task to get some :)

Currently I have some code, which executes synchronously as follows:


	public interface IProcessor
	{
		IEnumerable<Bar> Provide(Foo param)
	}

	private IEnumerable<IProcessor> processors; 

	public void DoMultiOperations(Foo param, Action<IEnumerable<Bar>> callback)
	{
		List<Bar> allResults = new List<Bar>();
		
		foreach(var processor in this.processors)
		{
			allResults.AddRange(processor.Provide(param));
		}
		
		callback(allResults);
	}

Consider each `IProcessor` accepts a `Foo` parameter to `Provide` returning an `IEnumerable<Bar>`. The aggregation of all results are sent back to the caller via the callback. 

Now some of the IProcessors are synchronous, meaning they execute locally and return immediately. Some are async and make a call to a server. I would like to schedule N tasks for N `IProcessor` instances and when all are complete (or time-out) concatenate the `IEnumerable<Bar>` results. 

Your help much appreciated :)