![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Старожил
Регистрация: 25.08.2011
Сообщений: 2,841
|
![]()
Здравствуйте, у меня такая проблема.
Есть основное приложение которое запускает поток с достаточно тяжелой функцией расчетов. Главное приложение является MDI контейнером. Так вот задача выводить информацию о работе потока в определенные окна которые являются дочерними в данном контейнере. Сделал функцию Update которая через Invoke вызывала функцию обновления в дочернем окне. Точнее там в TreeView обновлял нужную ветку дерева. Вот код: Код:
![]() Да и метод внутри Код:
Подскажите пожалуйста как правильно организовать вывод информации из потока?? Как это делают в серьезных программах что у них ничего не тормозит.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 18.01.2012
Сообщений: 975
|
![]()
Навскидку:
а) Обновлять информацию о потоке пореже. Не на каждой же итерации это делать ![]() б) Вынести обновление информации в отдельный поток с низким приоритетом, который периодически будет опрашивать "тяжелый" поток на предмет "информации", и после выводить её на нужные формы
Благодарить в репутацию. Проклинать — туда же
![]() |
![]() |
![]() |
![]() |
#3 | |
Старожил
Регистрация: 25.08.2011
Сообщений: 2,841
|
![]() Цитата:
Вот как сделать чтобы передать указатель в поток, который бы наблюдал за изменениями объекта?? Передавал ref Strategy, но почему то изменения не отслеживаются ... такое ощущение что на каком то этапе создается клон объекта. Можете как то прокомментировать такое поведение?
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два. |
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 18.01.2012
Сообщений: 975
|
![]()
Строго говоря, передать нужно ссылку на объект, а не указатель, C# все-таки
![]() Если Strategy - значимый тип (структура), то передастся действительно его копия. Если же Strategy - класс, то все зависит от конкретной реализации. Потоки как создаете?
Благодарить в репутацию. Проклинать — туда же
![]() |
![]() |
![]() |
![]() |
#5 | ||
Старожил
Регистрация: 25.08.2011
Сообщений: 2,841
|
![]() Цитата:
![]() ![]() Цитата:
В главной форме есть метод DoProcess() в обязанности которого входит расчет каждой стратегии. Этот метод я и запускаю в потоке. Код:
Код:
Также во второй форме создаю таймер (либо поток низкоприор.) который наблюдает за этим списком. Но вот почему то когда в исходный объект списка вносятся изменения то во второй форме их не видно.. Почему? Вроде передал ссылку ref Поправьте пожалуйста если что-то не правильно.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два. |
||
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 18.01.2012
Сообщений: 975
|
![]()
ref используется немного для других случаев, StrategyCollection в любом случае по ссылке передастся
Каким образом DoProcess() получает доступ к набору стратегий? Изменяет ли он их? Один о тот же объект передается в форм2 и поток вычисления? Эти и еще 100500 вопросов остаются открытыми, т.к. зависят от конкретной реализации, которую вы здесь не привели
Благодарить в репутацию. Проклинать — туда же
![]() |
![]() |
![]() |
![]() |
#7 | |
Старожил
Регистрация: 25.08.2011
Сообщений: 2,841
|
![]() Цитата:
Код:
Что еще вас интересует то?? Вопрос то в целом как в посторонней форме отслеживать любое изменение объекта в первой форме? Конечно есть вариант сделать объект public но хотелось бы как нибудь по ссылке передавать.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два. |
|
![]() |
![]() |
![]() |
#8 | |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
![]()
Ваша проблема не в том что не передаётся объект - он передаётся верно и без всяких ref-ов. Проблема с тем, что вы назвали
Цитата:
Изобретатель велосипедов
Последний раз редактировалось Selestis; 29.08.2013 в 22:46. |
|
![]() |
![]() |
![]() |
#9 | |
Старожил
Регистрация: 25.08.2011
Сообщений: 2,841
|
![]() Цитата:
Всем спасибо.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два. |
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Получение информации о процессе | RibGeDx | Visual C++ | 2 | 13.04.2013 14:09 |
Вывод информации | pqh | PHP | 7 | 15.04.2012 02:09 |
Информация о созданном процессе процессе | Deathcore | Помощь студентам | 1 | 05.04.2011 19:54 |
Вывод информации в таблицу | Desha | Обсуждение статей | 1 | 11.11.2009 13:21 |
Вывод информации из БД | Alamez | Помощь студентам | 2 | 18.05.2009 10:07 |