Список задач - начать, а затем подождать - PullRequest
0 голосов
/ 02 мая 2018

Я хочу сделать с List то, что первый метод делает с массивом.

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

public void TaskArray()
{
    ConcurrentBag<int> cb = new ConcurrentBag<int>();
    Task[] taskArray = new Task[10];
    for (int i = 0; i < 100; i++)
    {
        taskArray[i] = Task.Factory.StartNew((Object obj) => {

            Console.WriteLine("Task #{0} created at {1} on thread #{2}.",
                                i, Thread.CurrentThread.ManagedThreadId);
        },
                                                i);
    }
    Task.WaitAll(taskArray);
}

Это имеет синтаксические ошибки. Не удается преобразовать из system.generic.task.list в system.threading.task.task

public void TaskList()
{
    ConcurrentBag<int> cb = new ConcurrentBag<int>();
    List<Task> taskArray = new List<Task>;
    for (int i = 0; i < 100; i++)
    {
        taskArray.Add(Task.Factory.StartNew((Object obj) => {
            cb.Add(i);
            Console.WriteLine("Task #{0} created at {1} on thread #{2}.",
                                i, Thread.CurrentThread.ManagedThreadId);
        },
                                                i));
    }
    Task.WaitAll(taskArray);
}

1 Ответ

0 голосов
/ 02 мая 2018

Предполагая, что taskArray является List<Task>, вы можете просто использовать:

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