![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
аналоги Sleep_а [D7, WinXP]
Zhekson © (2005-02-07 15:25:00)В моей программе нужно периодически выжидать несколько секунд. Sleep не подходит так как не могу засыпает всё... даже кнопки...
_silver (2005-02-17 13:37:00) [1]Poirot © (07.02.05 18:40) [6]
Не согласен.
QuasiLamo © (07.02.05 20:26) [7]
Согласен.
sniknik (2005-02-17 13:37:00) [2]> дает чутка процессорного времени другим потокам, чтоб совсем не задохнулись
ну не совсем "чутка", скорее столько сколько получится при изначальном желании дать чуть-чуть. ;о))
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1107888763&n=5
> А что за магический эффект sleep(0)?
вообщето применение слип-а правильно идеологически, а вот в данном конкретном случае "магический эффект" это от неправильного использования, к примеру
> Sleep не подходит так как не могу засыпает всё... даже кнопки...
может получится если пытатюся "усыпить" поток в синхронизированной функции, в итоге заснет основной.
clickmaker (2005-02-17 13:22:00) [3]
> Vaitek © (17.02.05 13:10) [9]
> А что за магический эффект sleep(0)?
дает чутка процессорного времени другим потокам, чтоб совсем не задохнулись
Amoeba (2005-02-17 13:11:00) [4]Delay из RxLib/JVCL
Vaitek (2005-02-17 13:10:00) [5]А что за магический эффект sleep(0)?
Kerk (2005-02-07 23:43:00) [6]Zhekson (07.02.05 15:25)
Sleep не подходит так как не могу засыпает всё... даже кнопки...
Спят усталые игрушки,
Кнопки спят.... :)
QuasiLamo (2005-02-07 20:26:00) [7]_silver © (07.02.05 17:04) [3]
надо в цикл вставить хотя бы sleep(0), а то сильно ресурсы хавать будет.
Poirot (2005-02-07 18:40:00) [8]ТОгда поток пользуй и в нём слиип.
_silver © (07.02.05 17:06) [4]
Имхо тут не только форма может повиснуть но и всё ося...
Zhekson (2005-02-07 17:07:00) [9]Таймер мне помог...
спасибо.
_silver (2005-02-07 17:06:00) [10]_silver © (07.02.05 17:04) [3]
procedure _sleep(tick : DWORD);
var
t : DWORD;
begin
t := GetTickCount + tick;
while GetTickCount < t do
Application.ProcessMessages;
end;
_silver (2005-02-07 17:04:00) [11]procedure _sleep(tick : DWORD);
begin
t := GetTickCount + tick;
while GetTickCount < t do
Application.ProcessMessages;
end;
Засыпать будет не ровно на tick милисекунд, но может подойдёт.
sniknik (2005-02-07 15:46:00) [12]таймер (TTimer)
(хотя это и не аналог, но это именно то что тебе нужно)
либо цикл с тем же Sleep-ом поделенным на временные отрезки перемежаемые Application.ProcessMessages
либо загнать все свои "вычисления"(?) в отдельный поток.
SammIk (2005-02-07 15:39:00) [13]Дык тогда тебе ничего не поможет))
Узай потоки.