.NET 4.x Динамическое создание потоков, и ожидание их окончания - C#
Формулировка задачи:
И так! У меня такая проблема возникла.
Хочется чтобы программа работала в многопоточном режиме.
Потоки мне нужно создавать в одном месте. Это цикл.
Мне нужно чтобы после создания цикла for, было ожидание окончания работы всех потоков.
Как это реализовать?
for(блаблабла)
{
new Thread(() => { блаблабла }).Start();
}Решение задачи: «.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);
}
}
}