| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > timer |
| Автор: darkcoder 5.12.2007, 14:27 |
| Привет Подскажите как сделать чтобы программа ничего не делала n секунд. Timer1.Enable:=true; Timer1.Interval:=1000; while Timer1.Enable=true do.. Почему сваливается б бесконечный цикл(из цикал не вызывает событие ontimer)? Как сделать правильно? Второй вопрос, то же самое только время 'спячки' должно случайно выбираться в диапазоне от 10 до 60 секнуд? Спасибо! |
| Автор: ivan219 5.12.2007, 14:41 | ||
|
| Автор: THandle 5.12.2007, 14:48 |
| WaitForSingleObject. Я лично это предпочитаю. |
| Автор: darkcoder 5.12.2007, 15:35 | ||
Почему с использованием такой конструкции окно появляется не сразу а после того как программа отработает то есть через 5 сек?
Так как делать то чтоб правильно было? Может есть рабочий примерчик на TTimer? |
| Автор: THandle 5.12.2007, 15:37 |
| darkcoder, окно то создаётся. А вот показывается оно с 5-ти секундной задержкой из-за вызова Sleep(5000). |
| Автор: Alexeis 5.12.2007, 15:46 |
| Да забудьте вы про sleep в основном потоке, глупость это! В основном потоке тока таймер, sleep оставьте для дополнительного потока. |
| Автор: Lexicss 5.12.2007, 22:41 |
| Вообщем, на скока я понял тебе нужно сэмитировать паузу. Sleep использовать некрасиво, т.к. блокируется весь основной поток - это нехороший стиль программирования. Да и лажа получиться, пока будет работать sleep - форма будет заблокирована и не будет реагировать ни на какие события. Здесь лучше в форме использовать обработчик сообщений и посылать ему сообщения когда нужно снять с пацзы и выполнять что=-то дальше, а в качестве действий использовать соответсвующую процедуру/функцию. |