.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);
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д