| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm для начинающих > Пауза |
| Автор: I_Am_Rock 6.7.2010, 14:33 |
| Добрый день. Как сделать паузу? Sleep не подходит, так как грузит систему. Читал, что можно с помощью SetTimer, но никак не могу найти пример чтобы не через wm_timer, а через callback - потому что wm_timer посылается окну, а у меня в приложении нет окна. И еще - мне нужно именно на fasm Пожалуйста, напишите примерчик, чтоб после запуска программы выходил MessageBox, но не сразу, а через 5 секунд и чтобы это было реализовано SetTimer |
| Автор: spin2 6.7.2010, 14:59 |
| Loop пустой, например. |
| Автор: I_Am_Rock 6.7.2010, 15:09 |
| Извините, не понял? |
| Автор: I_Am_Rock 6.7.2010, 15:47 |
| Если Вы имеете ввиду создание пустого цикла, который выполняется пока текущее время <= время начала цикла + 3000 мс, то я так пробовал - пауза получается, но система подвисает на это время |
| Автор: JAPH 6.7.2010, 21:14 |
| Sleep грузит систему? Хм... Вродь не должна У SetTimer параметр HWND необязательный, и есть 4ый параметр lpTimerFunc ;) |
| Автор: JAPH 17.7.2010, 14:24 | ||||
Ну с таймером вроде все в порядке. А вот с GetMessage...
|
| Автор: izl3sa 19.7.2010, 07:21 |
| 2I_Am_Rock >> 100% загружает систему помоему вы не понимаете как работает система =\ Sleep -> NtDelayExecution -> KeDelayExecutionThread Поток после перехода в ядро добавляется в очередь ожидания и переходит в состояние ожидания. С этого момента поток не выполняется пока не выйдет интервал, если только он не alertable. Смотрите сурсы wrk\ntos\ke\wait.c Sleep технически не может грузить систему. Проблема в ваших сорцах. |
| Автор: I_Am_Rock 21.7.2010, 12:05 |
| JAPH, izl3sa, Спасибо, попробую |