I have a bit of code that works like this on a list of obj objects called ListofObjects:
List NewListofObjects();
Parall
The .NET Framework 4 introduces the System.Collections.Concurrent namespace, which includes several collection classes that are both thread-safe and scalable. https://docs.microsoft.com/en-us/dotnet/standard/collections/thread-safe/
BlockingCollection[] sourceArrays = new BlockingCollection[5];
for (int i = 0; i < sourceArrays.Length; i++)
sourceArrays[i] = new BlockingCollection(500);
Parallel.For(0, sourceArrays.Length * 500, (j) =>
{
int k = BlockingCollection.TryAddToAny(sourceArrays, j);
if (k >= 0)
Console.WriteLine("added {0} to source data", j);
});