Я пытаюсь создать список задач, которые будут вызывать функцию с параметром, который является объектом.
Этот объект представляет собой список из 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
со списком из 5 строковых значений от "Test 0"
до "Test 4"
.
Это не имеет никакого смысла для меня, и я делаю что-то действительно неправильно.