添加到线程任务列表

时间:2018-10-26 03:59:21

标签: c# multithreading c#-4.0

我正在尝试创建一个任务列表,这些任务将使用作为对象的参数来调用函数。

此对象是其他100个对象的列表。然后,我将此任务列表发送给Parallel.ForEach来处理任务。

我发现所有对象的参数都在变化,这对我来说没有意义。

static void Main(string[] args)
{
    var listOfTestTasks = new List<System.Threading.Tasks.Task>();
    List<string> stest = new List<string>();
    for (int i = 0; i < 5; i++)
    {
        stest.Add("Test " + i);
        listOfTestTasks.Add(new System.Threading.Tasks.Task(() => TestFunc(stest)));
    }

}

static private void TestFunc(List<string> test)
{
    int i = test.Count();
}

您会认为listOfTestTasks中的第一项将包含对TestFunc的调用,其中sTest包含一个"Test 0"的条目。

情况并非如此,listOfTestTasks中的所有项目都有"TestFunc",其参数包含sTest,并列出了"Test 0"至{{1 }}。

这对我来说没有任何意义,我在这里做错了什么事。

0 个答案:

没有答案