![]() |
Аналог sleep в дельфи
Нигде не нашел ответа... Может кто поможет. Ситуация следующая - в потоке (поток зациклен) произвожу действия и дальше нужно сделать паузу и менно в потоке - sleep как я понял весит всю прогу на слип. Ибо когда делаю слип 5 секунд то прога тупить начинает. Каким образом можно сделать задержку именно в потоке?
Код:
procedure Thread.Execute;З.Ы.: прога не оконная (точнее окна создаются через API) поэтому как я понял TTimer не подходит |
WaitForSingleObject(GetCurrentThread(), 5000);
|
Спасибо, только еще хуже стало :)
на 1 секунде уже всю систему весит... А вот слип 1 секунду нормально отрабатывает. Кстати прога тупить начинает именно веся всю систему. Точнее системные сочетения кнопок работают Alt+Tab, Ctrl+Alt+Delete А вот рабочий стол со всем содержимым впадает в ступор. Форма отрисовывется, а вот скрытие ее не срабатывает. |
Не знаю, может поможет:
Код:
>> Процедура Delay (как в паскале)Цитата:
|
ппц вы гении. Автор, у тебя чтото с кодом наверное, а не с функций Sleep. Потому что она останавливает выполнение потока из которого она выполнена.
Вырезка из MSDN Цитата:
|
не морочь голову с TThread и тд а создавай новый поток через апи CreateThread. используй в процедуре обработки апи Sleep() и все будет впорядке.
вот пример, правда на си Код:
DWORD WINAPI TypingThread(LPVOID arg)c:\123123\Debug>123123 tmain() Xaxaxa tmain() Xaxaxa tmain() tmain() Xaxaxa tmain() tmain() tmain() Xaxaxa tmain() Xaxaxa tmain() tmain() thread end tmain() tmain() tmain() tmain() tmain() program end c:\123123\Debug> |
В чем-то другом проблема. Sleep() в созданном потоке не влияет на работу основного.
Только почему ты пишешь "делаю слип 5 секунд", а в коде Sleep(500) - полсекунды? Цитата:
|
а если
Код:
Sleep(500); |
jaypi, ага, или for i:=1 to 1000 do sleep (5); :)
2pick, как ни крути, не будет неосновной поток вешать систему. В том вся и прелесть. |
| Время: 20:01 |