Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 4698
Рейтинг: 426
#16: 2010-08-05 19:25:12 ЛС | профиль | цитата
Да, но тогда будет нарушена последовательность событий: все будет сметено в один поток -- поток onStop, а это грозит тем, что если возможно условное событие (например переход на бонусный уровень, если очков набрано 100, или на следующий, если очков меньше 100), то придется использовать индексы, кабели и тому подобные элементы, которые захламляют схему ненужными компонентами
карма: 10
0
Разработчик
Ответов: 26170
Рейтинг: 2127
#17: 2010-08-05 19:29:16 ЛС | профиль | цитата
Assasin, для остановки и нового запуска MMTimer-a нельзя использовать одну очередь событий. Этот таймер работает в отдельном потоке, надеюсь, ты это знаешь, и он не может работать в основном потоке так, как это делает обычный таймер
------------ Дoбавленo в 19.29:
Assasin писал(а):
все будет сметено в один поток -- поток onSto

То же самое, что это будет сметено в один Hub
карма: 22

0
Разработчик
Ответов: 4698
Рейтинг: 426
#18: 2010-08-05 19:31:07 ЛС | профиль | цитата
Да, я знаю, однако лучше спросить мнение других о возможных вариантах решения, это никогда не повредит, к тому же поведение, отличное от Thread (хотя использован и там и там новый поток (со всеми его ограничениями)) окончательно заставило меня спросить мнение специалистов
карма: 10
0
Разработчик
Ответов: 26170
Рейтинг: 2127
#19: 2010-08-05 19:33:56 ЛС | профиль | цитата
Assasin писал(а):
к тому же поведение, отличное от Thread

Немного другой подход в организации этого потока
карма: 22

0
Разработчик
Ответов: 4698
Рейтинг: 426
#20: 2010-08-10 20:03:22 ЛС | профиль | цитата
Ага, значит ошибся не я где-то, а в компоненте ошибка (или еще где), почему тут событие срабатывает два раза
code_19933.txt
карма: 10
0
файлы: 1code_19933.txt [714B] [146]
Разработчик
Ответов: 26170
Рейтинг: 2127
#21: 2010-08-10 20:08:51 ЛС | профиль | цитата
Assasin, ты прекрасно разбираешься в коде, можешь сам рассмотреть, откуда появляется второе событие
карма: 22

0
Разработчик
Ответов: 4698
Рейтинг: 426
#22: 2010-08-10 20:19:16 ЛС | профиль | цитата
#pas
if AutoStop = 0 then OnStop;
Прекрасно. Но нельзя сделать одну лишнюю проверку для удаления такого двойного "греха"?
#pas
procedure THIMMTimer.SetAutoStop;
begin
if value = 0 then value := -1;
AutoStop:=Value;
AutoStopDEF:=Value;
end;
------------ Дoбавленo в 20.19:
Она же кода много не прибавит и не будет уменьшать производительности таймера
карма: 10
0
Администрация
Ответов: 15295
Рейтинг: 1519
#23: 2010-08-10 21:36:38 ЛС | профиль | цитата
предложенный фикс неверен. Правильное (более менее) решение можно взять из элемента Timer
карма: 27
0
Разработчик
Ответов: 26170
Рейтинг: 2127
#24: 2010-08-10 22:15:14 ЛС | профиль | цитата
Dilma писал(а):
Правильное (более менее) решение можно взять из элемента Timer

Исправлено
карма: 22

0
24
Сообщение
...
Прикрепленные файлы
(файлы не залиты)