![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 06.08.2015
Сообщений: 6
|
![]()
Всем привет.
У меня приложение отображает некоторое кол-во панелей, на них идет время и показывается есть ли разница с текущем временем. Вот как мне сделать чтобы они все были созданы в разных потоках и не взаимодействовали друг с другом. А то от не работы одной, виснет все приложение. Заранее спасибо. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 27.01.2014
Сообщений: 115
|
![]()
http://habrahabr.ru/post/126495/
выделите часы каждый в свою функцию и запустите потоки, в функции часы инициализируются и будут работать отдельно от остальных часов. К объектам на форме необходимо обращаться через делегат. https://msdn.microsoft.com/ru-ru/lib...v=vs.120).aspx Второй вариант - воспользуйтесь timer, где на timer.Tick сделайте обработку часов каждый в своей функции. Создадите нужное количество таймеров, каждый со своей функцией тика, в ней опять же через делегат выводите разницу во времени. Единственное, не забудьте синхронизировать ваши потоки (таймеры) с текущим временем, чтобы они в миллисекундах совпадали - иначе на большом количестве панелей будет рябь (имхо) при смене секунд. |
![]() |
![]() |
![]() |
#3 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,543
|
![]() Цитата:
Так что ваше описание (и ответы на них!) классический X, Y, Z Дайте описание исходной задачи (без панелей/часов/потоков/таймеров)
программа — запись алгоритма на языке понятном транслятору
|
|
![]() |
![]() |
![]() |
#4 |
Регистрация: 06.08.2015
Сообщений: 6
|
![]()
Задача заключается в том, чтобы главная форма не висла от доп. форм при их зависании либо при их работе.
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 30.06.2015
Сообщений: 353
|
![]()
Интерфейс в принципе не должен зависеть от работы программы. Возможно вы что-то не то делаете внутри ваших "панелей" или "форм".
|
![]() |
![]() |
![]() |
#6 |
Регистрация: 06.08.2015
Сообщений: 6
|
![]()
Возможно так и есть. Понять бы что не так
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 27.01.2014
Сообщений: 115
|
![]()
В целом, я ответил на ваш вопрос о развязке логики и интерфейса первым же ответом.
До кучи могу еще дать ссыль на backgroundworker https://msdn.microsoft.com/ru-ru/lib...v=vs.120).aspx |
![]() |
![]() |
![]() |
#8 |
Регистрация: 06.08.2015
Сообщений: 6
|
![]()
Тогда такой вопрос - а откуда именно запускать backgroundworker?
из формы главной или из классов? есть Form1 и класс, в котором еще дочерний класс. |
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 27.01.2014
Сообщений: 115
|
![]()
orphen, не смешивайте мух и котлеты.
У вас есть визуальная часть вашего приложения, у этой визуальной части есть обработчики, например, Form1_Loaded, button_click и т.д. А есть логика вашего приложения. Так вот логика вашего приложения должна быть развязана с визуальной частью и стыковаться только на обработчиках событий (нажатие той же кнопки, запускающее загрузку данных). Все операции должны быть асинхронными, иначе визуальная часть будет виснуть. Откуда запускать backgroundworker решать вам, так как всё зависит от того, какую логику вы закладываете в ваше приложение. Например, если пользователь должен открывать форму на которой находится датагрид и данные должны загрузаться сразу же после открытия формы, логично, чтобы асинхронная загрузка запускалась в момент открытия формы. А при возникновении событий завершения загрузки данные добавлялись в визуальную часть. |
![]() |
![]() |
![]() |
#10 |
Регистрация: 06.08.2015
Сообщений: 6
|
![]()
Видите в чем загвоздка, я не знаю как сделать чтобы 19 панелей были отдельными друг от друга.
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
распараллеливание циклов c++ | Denis++ | Visual C++ | 5 | 22.05.2014 09:25 |
Распараллеливание программы (C++) | Lamaro | Помощь студентам | 5 | 04.10.2012 21:50 |
Распараллеливание процессов | Walanter | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 3 | 05.03.2012 22:02 |
Распараллеливание процессов | Zooleen | Общие вопросы C/C++ | 0 | 16.06.2010 16:59 |
Распараллеливание потока | eXa | Общие вопросы Delphi | 3 | 19.07.2007 20:11 |