我正在尝试创建一个任务列表,这些任务将使用作为对象的参数来调用函数。
此对象是其他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 }}。
这对我来说没有任何意义,我在这里做错了什么事。