93 / 94 / 51
Регистрация: 19.06.2013
Сообщений: 323
|
|
1 | |
Как реализовать очередь нескольких потоков?09.10.2014, 10:51. Показов 2895. Ответов 10
Метки нет (Все метки)
Здравствуйте, коллеги! Посоветуйте, как мне реализовать очередь нескольких потоков? Мне нужно сделать так, чтобы после выполнения одного потока запускался следующий. После успешного завершения следующего - запускался третий и.т.д.
0
|
09.10.2014, 10:51 | |
Ответы с готовыми решениями:
10
Как реализовать очередь потоков Как правильно реализовать очередь потоков Как создать очередь потоков Как дождаться завершения нескольких потоков |
325 / 136 / 28
Регистрация: 18.09.2014
Сообщений: 167
|
|
09.10.2014, 10:57 | 2 |
Сообщение было отмечено BroDIK как решение
РешениеКод
var task = Task.Factory.StartNew(..)//первый пошел var task2 = task.ContinueWith(...)//второй пошел var task3 = task2.ContinueWith(...)//третий пошел
1
|
17793 / 12944 / 3381
Регистрация: 17.09.2011
Сообщений: 21,226
|
|
09.10.2014, 10:59 | 3 |
Здравствуйте!
А зачем вам так делать? Ведь если операции должны выполняться строго одна за другой, а не параллельно, то зачем запускать новые потоки? Можно ведь все три операции выполнить последовательно в одном потоке и прилично сэкономить на ресурсах для создания и запуска нового потока.
1
|
40 / 40 / 13
Регистрация: 09.07.2014
Сообщений: 116
|
|
09.10.2014, 13:17 | 4 |
с помощью ключевого слова await в методе, например, все потоки будут запускаться поочередно.
Нет желания писать код, но у меня скриншот остался когда я еще игралась с потоками
1
|
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825
|
|
09.10.2014, 13:18 | 5 |
kolorotur, прав. У меня была проблема когда я не мог ставить главный поток на паузу, т.к форма залипала. Из за этого делил на 2 потока(1 форма, 2 функционал), но в вашем вопросе я не вижу ничего подобного
0
|
93 / 94 / 51
Регистрация: 19.06.2013
Сообщений: 323
|
|
09.10.2014, 14:14 [ТС] | 6 |
Если ТС написал:
значит так надо Я извиняюсь, наверное, нужно было сразу обозначить суть проблемы. Дело в том, что я работаю с устройством, посылая ему команды. И мне никак нельзя посылать команды параллельно.
И тем более, я делаю приложение на WinForms. Для этого мне и нужны потоки. Вариант Defazze я уже попробовал - работает Теперь попробуем через await. Чуть позже напишу о результатах.
Не по теме: Ставлю "Спасибо" в этой теме людям, которые без всяких вопросов дали ответ по делу :)
0
|
17793 / 12944 / 3381
Регистрация: 17.09.2011
Сообщений: 21,226
|
|
09.10.2014, 14:27 | 7 |
В большинстве случаев ТС хочет решить определенную задачу, а не просто поиграться с синтаксисом ради развлечения.
Зачастую путь к решению задачи выбирается неправильный или слишком долгий и сложный: если ТС для задачи по перевозке грузов выбрал сани и теперь спрашивает, какую использовать смазку, чтобы лыжи лучше скользили по асфальту, то правильный ответ должен быть не в категории рассуждений "солидол или вазелин", а предложение поставить прицеп на колеса. Исходя из всех данных, полученных от вас, правильным решением будет запустить один отдельный поток, чтобы не вис интерфейс, и в этом потоке последовательно посылать команды.
0
|
1158 / 880 / 513
Регистрация: 09.04.2014
Сообщений: 2,086
|
|
09.10.2014, 14:34 | 8 |
а зачем их посылать из разных потоков, вот что интересно (для расширения собственного кругозора)
0
|
93 / 94 / 51
Регистрация: 19.06.2013
Сообщений: 323
|
|
09.10.2014, 14:41 [ТС] | 9 |
На форме находятся много вкладок, в которых есть еще вкладки. А на этих вкладках есть несколько ListView. В зависимости от определенных строк ListView, команды посылаются различных форматов. И, конечно, перед этим собираются данные с определенных вкладок и конвертируются соответственно. Что теперь нужно сделать? Снова все в одном отдельном потоке? Может есть вариант по-лучше? Посоветуйте)
Добавлено через 3 минуты Потому что в нескольких командах формат сообщения синтаксически и в последовательности отправки (изредко) повторяется. Добавлено через 1 минуту Tirenta, Ваш вариант, к сожалению, мне не подходит: версия C# != 5 Но все равно спасибо
0
|
17793 / 12944 / 3381
Регистрация: 17.09.2011
Сообщений: 21,226
|
|
09.10.2014, 15:01 | 10 |
В какой момент происходит отправка очередной команды?
При выборе вкладки? При клике на элемент ListView? При клике по кнопке? По таймеру? Если не сложно, опишите алгоритм, по которому работает приложение. Пока что больше всего похоже на то, что вам нужен паттерн Producer/Consumer, но прежде чем кидаться в реализацию, хотелось бы по-больше информации. Добавлено через 1 минуту Ну и чтобы два раза не вставать: под какую версию фреймворка пишете?
0
|
93 / 94 / 51
Регистрация: 19.06.2013
Сообщений: 323
|
|
10.10.2014, 09:03 [ТС] | 11 |
Это уже совсем другая тема Всем спасибо за советы
0
|
10.10.2014, 09:03 | |
10.10.2014, 09:03 | |
Помогаю со студенческими работами здесь
11
Как обезопасить dataReader от доступа из нескольких потоков? Как сделать чтобы массив заполнился из нескольких потоков? Как обеспечить синхронизацию xchg для нескольких потоков? Отобразить ход нескольких потоков в нескольких ProgressBar Как реализовать создание и завершение потоков Как реализовать рекурсию в синхронизации потоков Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Блоги программистов | |||||
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален
В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
|
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
|
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели
В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
|
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества
Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
|
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов.
. . .
|
С чего начать программировать микроконтроллеры
raxper 06.01.2025
Введение в мир микроконтроллеров
Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
|
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
|
Обновление сайта www.historian.by
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
|
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
|
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list):
s=^y]
p=x and y
for i in range(1,len(x)):
s. append((x^y)^p)
p=(x and y)or(p and (x or y))
return s
x=list()
y=list()
|
Это мы не проходили, это нам не задавали...(асихронный счётчик с управляющим сигналом зад
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
|
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
|