С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/18: Рейтинг темы: голосов - 18, средняя оценка - 4.50
1 / 1 / 0
Регистрация: 28.01.2016
Сообщений: 96
1

Как стартовать несколько потоков и дождаться их выполнения

15.06.2016, 23:24. Показов 3397. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
привет
есть 4 метода
хочу стартовать их и дождаться когда они все закончат
подскажите как реализовать без изобретаия велосипеда
использую 4.6.2
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.06.2016, 23:24
Ответы с готовыми решениями:

Дождаться полного выполнения пула потоков
У меня пул потоков выполняет сортировку временных файлов: for (int i = 1; i <...

BackgroundWorker, несколько потоков и процент выполнения
Здравствуйте, На форме есть кнопка и label (из примера...

Как дождаться выполнения первой команды, потом перейти ко второй?
System.IO.File.Delete("C:\\Program Files\\1.exe"); Как дождаться выполнения первой команды, потом...

Правильно создать пул потоков, запустить эти потоки одновременно и дождаться их завершения
Добрый день! Подскажите пожалуйста, как правильно создать пул потоков, запустить эти потоки...

4
Эксперт .NET
11117 / 7035 / 1576
Регистрация: 25.05.2015
Сообщений: 21,283
Записей в блоге: 14
16.06.2016, 04:41 2
Читайте про Parallel, PLINQ.
0
442 / 410 / 132
Регистрация: 21.01.2012
Сообщений: 974
16.06.2016, 05:52 3
Лучший ответ Сообщение было отмечено saderty как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Task 
    t1 = new Task(Method1),
    t2 = new Task(Method2),
    t3 = new Task(Method3),
    t4 = new Task(Method4);
 
try
{
    t1.Start();
    t2.Start();
    t3.Start();
    t4.Start();
    Task.WaitAll(t1, t2, t3, t4);
}
catch (AggregateException)
{
 
}
1
1 / 1 / 0
Регистрация: 28.01.2016
Сообщений: 96
16.06.2016, 16:14  [ТС] 4
спасибо - то что надо

а как сделать ожидания 4 флагов
например есть 4 потока которые работают в фоне
каждый поток по завершении выставляет некоторый флаг = True
как мне дождаться всех флагов без конструкции типа

VB.NET
1
2
3
4
do 
if flag1=true and flag2=true then exit do
sleep 100
loop
????
0
Эксперт .NET
11117 / 7035 / 1576
Регистрация: 25.05.2015
Сообщений: 21,283
Записей в блоге: 14
16.06.2016, 16:28 5
saderty, создать для каждого потока свой AutoResetEvent, собрать их в массив WaitHandle и ждать их всех через WaitHandle.WaitAll();
Но именно для ожидания завершения уже показали: Task.WaitAll(t1, t2, t3, t4);
0
16.06.2016, 16:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.06.2016, 16:28
Помогаю со студенческими работами здесь

Дождаться выполнения Task без Thread.Sleep?
using System; public class Test { public static void Main() { Console.WriteLine("1");...

Дождаться полного выполнения пула потоков
ExecutorService service = Executors.newFixedThreadPool(4); for (int i=0;i<=fileCount;i++)...

Как дождаться завершения нескольких потоков
Добрый день. Столкнулся с такой проблемой: в методе main() создается n одинаковых потоков, каждый...

Promise, как дождаться выполнения
Здравствуйте. Есть код, у меня вместо setTimeout идет запись в indexedDB, но это не должно менять...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru