.NET 4.x Динамическое создание потоков, и ожидание их окончания - C#

Узнай цену своей работы

Формулировка задачи:

И так! У меня такая проблема возникла. Хочется чтобы программа работала в многопоточном режиме. Потоки мне нужно создавать в одном месте. Это цикл.
for(блаблабла)
{
new Thread(() => { блаблабла }).Start();
}
Мне нужно чтобы после создания цикла for, было ожидание окончания работы всех потоков. Как это реализовать?

Решение задачи: «.NET 4.x Динамическое создание потоков, и ожидание их окончания»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
using System.Threading;
using System.Threading.Tasks;
 
namespace ConsoleApplication2 {
    class Program {
        static Random r = new Random();
        static void Main(string[] args) {
            int taskCount = 5;
            Task[] tasks = new Task[taskCount];
            for (int i = 0; i < taskCount; i++) {
                int id = i;
                tasks[i] = new Task(() => { TaskMethod(id); });
            }
            Task endedTask = Task.Factory.ContinueWhenAll(tasks, (e) => {
                Console.WriteLine("All tasks completed!");
            });
            foreach (Task t in tasks) {
                t.Start();
            }
            Console.ReadLine();
        }
        static void TaskMethod(int taskId) {
            Console.WriteLine("Task {0} started!", taskId);
            Thread.Sleep(r.Next(3000,6000));
            Console.WriteLine("Task {0} completed!", taskId);
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.286 из 5
Похожие ответы