Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];

Вниз

Независимый Timer   Найти похожие ветки 

 
Yuri Btr   (2002-07-03 11:28) [0]

Ув. мастера как сделать так, чтобы Timer в моей программе не тормозился при больших вычислениях. Очевидно вынести его в отдельный поток?
Такой вопрос где то уже задавался, но к сожалению не могу его найти. Заранее спасибо.


 
Skier   (2002-07-03 11:33) [1]

>Yuri Bt
А Application.ProcessMessages не спасёт гиганта мысли и
отца русской демократии ? :)


 
Fiend   (2002-07-03 11:33) [2]

точно.
или найди в инэте, где то есть компонент TThreadTimer


 
Yuri Btr   (2002-07-03 11:40) [3]

to Skier
Application.ProcessMessages не всегда помогает. К тому же отставание всё равно будет. Т.к. невозможно позасовывать Application.ProcessMessages в каждую паузу между операторами.

to Fiend
К сожалению мне нужно использовать только стандартные компоненты Delhi. Я где то видел как это делается руками над простым TTimer


 
Skier   (2002-07-03 11:45) [4]

>Yuri Btr
Посмотри Bluecave Components v.1.0.0 (с исходными текстами)
http://www.torry.net/middle.htm


 
T2   (2002-07-03 11:59) [5]

Можно привязываться к системному времени или к тикам.


 
Yuri Btr   (2002-07-03 13:11) [6]

Ну что, больше идей нет?
Я просмотрел несколько компонент - таймеров, которые позволяют задать приоритет, но они все почти одинаково работают...
Пожалуйста, мастера помогите!


 
qube   (2002-07-03 14:01) [7]

Логичнее не таймер засунуть в отдельный поток, а большие вычисления. Лезешь в New/Thread Object, и в созданном классе все свои большие вычисления реализуешь в методе Execute.


 
Yuri Btr   (2002-07-03 14:05) [8]

to qube
В ообщем то логичное предложение, но дело в том, что у меня на форме присутствуют в разных местах ListBox"ы и надо добавлять в них много Items (при этом прога тормозится). Для этого не очень удобно использовать Threads.


 
Digitman   (2002-07-03 14:07) [9]

>Yuri Btr

<qube> прав на все 100%. Прислушайся к его совету. Осн. поток, который должен как можно оперативней реагировать на таймерные события, должен быть избавлен от длительных (сравнимых по времени с периодом таймера) вычислительных алгоритмов, стартующих в контексте неких событий/сообщений, обрабатываемых в этом же (основном) потоке.


 
qube   (2002-07-03 14:52) [10]

Большие вычисления -- это одно, а обновление элементов управления на форме -- это совсем другое. Нельзя производить обработку событий в одном потоке, при этом обновляя содержимое листбоксов в другом потоке, могут возникнуть непредсказуемые трудноуловимые глюки. Оптимизируй код. Вместо Listbox.Items.Add в цикле попробуй так:

var
NewItems: TStrings;
begin
NewItems := TStringList.Create;
... // добавляем в NewItems нужные элементы
ListBox.Items := NewItems;
NewItems.Free;
end;


 
Yuri Btr   (2002-07-03 15:05) [11]

to qube, to Digitman
Большое вам спасибо за дельные советы.
Действительно оптимизация дала положительный результат - наверно этим мы просто избавили ListBox прорисовывать лишний раз новые Items.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.016 c
8-47622
Stimky
2002-03-06 18:02
2002.07.15
Есть ли у кого пример реализации Z-Buffer


1-47253
Grave
2002-06-26 23:30
2002.07.15
Переключение задач (task switching)


7-47813
_toltec
2002-04-17 22:46
2002.07.15
CreateProcessAsUser


3-47179
Teas
2002-06-15 01:48
2002.07.15
DBGrid


1-47542
Извращенец
2002-06-27 19:46
2002.07.15
Быстро, но плавно





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский