|
106 / 87 / 13
Регистрация: 29.08.2012
Сообщений: 538
|
|
События20.09.2013, 16:24. Показов 686. Ответов 2
Метки нет (Все метки)
У меня есть форма (сервер), на ней прогрессбар (со свойством IsIndeterminate="True") и кнопка. есть несколько объектов-менеджеров, которые общаются по сети с клиентами. у каждого объекта-менеджера свой клиент. на клиентах выполняется какая-то тяжелая задача. я нажимаю на кнопочку, менеджеры говорят клиентам выполнить задачу. тут же активизируется прогрессбар. как только клиент закончил выполнять задачу, он говорит об этом своему менеджеру. как только все клиенты закончили свои задачи прогрессбар должен отключиться. задачи разновесные.
при этом может быть еще такая ситуация. сервер спокойно стоит (клиентов нет либо уже все отработали) и тут внезапно подключается еще один клиент. нужно чтобы ему (и только ему) отдался запрос на выполнение задачи, прогрессбар при этом активизировался. после выполнения задачи прогрессбар потух. как такое можно реализовать? как решить задачу в лоб я знаю. наверняка есть какой-нибудь механизм с евентами. мой способ. у каждого менеджера есть переменная. как только задача отдалась, эта переменная становится равной 1. как только задача закончилась, она становится равной нулю. сервер же, каждую секунду например, опрашивает всех менеджеров: а ваш клиент еще решает задачу? и если да, то прогресс бар не тушить. как только все переменные стали равными 0, тушить прогрессбар. но это не красиво.
0
|
|
| 20.09.2013, 16:24 | |
|
Ответы с готовыми решениями:
2
События Обработчик события Передача события |
|
608 / 583 / 157
Регистрация: 29.06.2010
Сообщений: 1,620
|
|
| 20.09.2013, 17:02 | |
|
ну таки булевый массив, хотя с учетом случайных добавлений новых клиентов лучше list.
обращение к этому листу необходимо жестко ограничить тремя методами: на подключение нового клиента - добавление bool в лист, на отключение клиента - исключение bool из листа, и собственно метод установки/сброса значения bool в листе отдельным клиентом. после того как менеджеры "говорят" клиентам выполнить задачу - все эллементы в списке сбрасываются в false. как клиент выполнил задачу - он устанавливает свой эллемент в true. при добавлении клиента добавить в список новый bool (возможно даже со значением true), потом "как-то" (тут мы уже не при чем, ваша архитектура) сказать только ему выполнять задачу и устанавливать его флаг в списке в false. каждый из вышеперечисленных трёх методов перед завершением должен проанализировать все элементы в списке, и если есть хоть один false - запустить прогресс-бар, если все true - остановить прогресс бар.
1
|
|
|
106 / 87 / 13
Регистрация: 29.08.2012
Сообщений: 538
|
|
| 20.09.2013, 17:10 [ТС] | |
|
Spectral-Owl, угумс, щас подумаю.
0
|
|
| 20.09.2013, 17:10 | |
|
Помогаю со студенческими работами здесь
3
Обработчик события
Получения события Создание события 1 функция на 2 события Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|