如何将Parallel.ForEach与List一起使用?

时间:2017-11-29 10:23:06

标签: c# multithreading list

我想将Parallel.ForEachList一起使用,但我不能这样做。

这是我目前的代码:

class Test1
{
    public static List<string> myList = new List<string>();

    public object myListToArray()
    {
        return myList.ToArray();
    }
}

class Test2
{
    public void Test(){
        Task.Factory.StartNew(() => Parallel.ForEach(new Test1().myListToArray(), new ParallelOptions { MaxDegreeOfParallelism = 250 }, foo =>
        {
            // do stuff
        }));
    }
}

我收到了这个错误:

  

无法派生'Parallel.ForEach'方法的类型参数   从使用。尝试明确指定类型参数。

我该如何解决?

1 个答案:

答案 0 :(得分:0)

您现有的代码无效,因为Parallel.ForEach不知道如何迭代object(上面的代码)/ ArrayList(原帖中的代码)

public void Test(){
    Task.Factory.StartNew(() => Parallel.ForEach(Test1.myList, new ParallelOptions { MaxDegreeOfParallelism = 250 }, foo =>
    {
        // do stuff
    }));

将有效,因为myList是通用ListParallel.ForEach知道如何处理。