Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744

Избавиться от vcl-тормозов

02.02.2012, 14:21. Показов 1048. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток.

В кратце алгоритм программы такой:
1) Каждые 10 секунд IdHTTP грузит 5-10 страниц GET-запросом,
Если на странице оказалась нужная информация, то:
2) Воспроизводится мелодия посредством BASS.DLL
3) Создаются кнопочки на главной форме

Результат:
Кнопки появляются с задержкой 2-5 сек.
Анимация кнопок практически не работает
При нажатии на кнопку может получиться так, что программа зависает на 3-5 секунд

1 попытка решить проблему: (Многопоточность)
Изменено:
1) IdHTTP каждую страницу грузит в отдельном потоке
+ в этом же потоке создаются кнопочки

Результат:
При воспроизведении мелодии звук прерывается каждые 2-5 секунд

Как же быть дорогие друзья?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.02.2012, 14:21
Ответы с готовыми решениями:

Как избавиться от тормозов компонента Chart при навигации по нему если загружено много данных
Ребят, как избавиться от тормозов компонента Chart при навигации по нему если загружено много данных... делаю вывод данных по всех...

uptime без тормозов
имеется win7x64 6ядер феном 16гб озу. я на ней играю в игры, смотрю видео, сижу в и-нете. сутки без перезагрузки машина ощутимо...

Рой тормозов зашкаливает. HDD
Давно начал тормозить комп. прям работает работает, но при запуске чего-нибудь нового бац и в тупняк на 10 сек. Винду естественно снести...

8
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
02.02.2012, 15:39
Цитата Сообщение от __bool Посмотреть сообщение
1) IdHTTP каждую страницу грузит в отдельном потоке
+ в этом же потоке создаются кнопочки
Графические элементы VCL нельзя создавать в потоках. Только в главной программе

Не по теме:

Ну и так, к слову. По поводу названия темы. Тормоза VCL тут не при чём. Это тормоза твоей программы

1
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
02.02.2012, 15:44  [ТС]
Ясно..Спасибо. Значит буду как-то передавать из потока информацию в основной поток..
Сразу спрошу, нормально звучит следующий способ?
Посредством SetReturnValue() вернуть в основной поток адрес структуры(struct) в которой будет вся необходимая информация о предстоящем создании объектов на форме.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
02.02.2012, 15:53
Я у себя использовал стандартный VCL'овский класс TThread. У можно переопределить метод (событие) OnTerminate - он будет вызван в главной программе после завершения потока
1
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
02.02.2012, 16:31  [ТС]
Я как раз его и использую. Подскажите пожалуйста как его переопределить. И можно ли ему передать параметры..
0
117 / 74 / 6
Регистрация: 23.01.2012
Сообщений: 186
02.02.2012, 16:39
Передача параметров:
C++
1
2
3
4
5
6
7
8
9
class OpcThreadInput : public TThread
{
private:
    MSG Msg;
    CRITICAL_SECTION_DATA *data_group;
    void __fastcall Execute();
public:
    __fastcall OpcThreadInput(bool CreateSuspended,CRITICAL_SECTION_DATA *data);
};
просто добавить в конструктор дополнительные параметры или перегрузите его.
Переопределить метод:
просто напишите свой с таким же именем.
1
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
02.02.2012, 18:08  [ТС]
Спасибо буду пробовать.
А как поймать значение которое устанавливается с помощью SetReturnValue()?

Добавлено через 34 минуты
Цитата Сообщение от Evg Посмотреть сообщение
Графические элементы VCL нельзя создавать в потоках. Только в главной программе
Теперь кнопки создаются в главном потоке, но воспроизведение звука по-прежнему глючит во время работы TIdHTTP в дочерних потоках

Пробовал приоритет основного потока устанавливать в RealTime - без изменений

Ну вот, теперь, еще и зависает программа

Добавлено через 10 минут
Опа.. Если сделать Detach From Program, то никаких глюков во время воспроизведение звука!
Вот почему так? Наблюдение билдера грузит программу что-ли?
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
06.04.2012, 04:30
Иногда для снятия тормозов помогает кинуть на форму компонент IdAntiFreeze

Графические элементы VCL нельзя создавать в потоках. Только в главной программе
А разве он графический ( в смысле видимый) ?

Добавлено через 3 минуты
Вот вроде люди в потоке писали
Многопоточность и IdHTTP
0
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
06.04.2012, 09:23  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Иногда для снятия тормозов помогает кинуть на форму компонент IdAntiFreeze
TIdAntiFreeze на крайний случай, т.к. с ним форма не "заморожена" но глючит..
В плеере стоял визуализатор частот, так я понаблюдал работу TIdAntiFreeze.. ужас!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.04.2012, 09:23
Помогаю со студенческими работами здесь

OpenGL + GLUT, в чем причина тормозов?
Начал пилить простенький 2d платформер используя GLUT, на данном этапе есть примитивы, они(примитивы) могут передвигаться, сталкиваться и...

Что может быть причиной тормозов в игре
Всем привет , хотелось бы найти помощи на хорошем сайте и вот заглянул сюда , в ПК я не разбираюсь ну может на уровне дилетанта) И вот...

Не могу понять почему в потоке нет тормозов
while work do begin for I := 0 to Form1.mmowords.Lines.Count-1 do begin resdom:=...

Визуализация большого количества моделей - решение тормозов
ребятушки. я парюсь с xna. с 3d. проблема - программа тормозит. УЖАСНО тормозит. я, в общем-то, сам виноват. но проблема от этого не...

Скрытие тормозов при ожидания ответа от сервера
Здравствуйте! Подскажите, пожалуйста, как можно реализовать скрытие тормозов при ожидании ответа от сервера(тяжелые запросы). Как вариант...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru