Добавить в список задач темы - PullRequest
0 голосов
/ 26 октября 2018

Я пытаюсь создать список задач, которые будут вызывать функцию с параметром, который является объектом.

Этот объект представляет собой список из 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".

Это не имеет никакого смысла для меня, и я делаю что-то действительно неправильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...