Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.26;
Скачать: CL | DM;

Вниз

PeekMessage   Найти похожие ветки 

 
Sergey   (2003-05-13 21:07) [0]

Так... у мя вопросик... как использовать енту функцию...

Вот у меня например ожидание какого-то момента

repeat
sleep(500)
until ...

Что и как надо сделать, чтобы в это время программа не "висела"...?


 
Palladin ©   (2003-05-13 21:17) [1]

не использовать sleep


 
Думкин ©   (2003-05-14 06:52) [2]

GetTickCount
Application.ProcessMessages


 
Sergey   (2003-05-14 11:20) [3]

Palladin

>не использовать sleep

???
ну допустим...а как тогда мне например сделать ожидание запуска сервиса в течении 20 секунд без нагрузка на проц?


 
Anatoly Podgoretsky ©   (2003-05-14 11:25) [4]

Sergey (14.05.03 11:20)
sleep в отдельном потоке, правда и sleep не обязателен можно WaitFor*


 
panov ©   (2003-05-14 12:00) [5]

Можно и так примерно:


unit uWaitMoment;

uses classes,windows;

const WM_OPPA=WM_USER+1;

type
TWaitOneMoment = class(TThread)
private
fInterval: Cardinal;
fHandleForm: THandle;
protected
procedure Execute; override;
public
constructor Create(aHandleForm: THandle;aInterval: Cardinal);
end;

implementation

constructor TWaitOneMoment.Create(aHandleForm: THandle;aInterval: Cardinal);
begin
inherited Create(True);
fHandleForm := aHandleForm;
fInterval := aInterval;
FreOnTerminate := True;
Priority := tpTimeCritical;
Resume;
end;

procedure TWaitOneMoment.Execute;
var
SleepInterval: Cardinal;
begin
SleepInterval := 50;
while fInterval>0 do
begin
if fInterval<50 then SleepInterval := fInterval;
if Terminated then Break;
Sleep(SleepInterval);
fInterval := fInterval-SleepInterval;
end;
if fInterval<=0 then PostMessage(fHandleForm,WM_OPPA,0,0);
end;

end.

unit ....

uses uWaitMoment;

TForm1=class...
private
procedure OnWM_OPPA(var msg:TMessage);message WM_OPPA;
...
end;

implementation

procedure TForm1.OnWM_OPPA(var msg:TMessage);
begin
ShowMessage("Дождались наконец-то!");
end;

procedure TForm1.ButtonStartClick(Sender: TObject);
begin
...
TWaitOneMoment.Create(Form1.Handle,20000);
end;

...
end.


 
gek ©   (2003-05-14 12:03) [6]

Не, это понятно.
Но, по-моему WaitFor более приемлем


 
panov ©   (2003-05-14 12:05) [7]

WaitFor заблокирует интерфейс пользователю.


 
gek ©   (2003-05-14 13:46) [8]


> panov © (14.05.03 12:05)
> WaitFor заблокирует интерфейс пользователю.


Честно говоря не встречался. Не знаю...



Страницы: 1 вся ветка

Текущий архив: 2003.05.26;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
8-83612
bil
2003-02-09 13:22
2003.05.26
Как убрать мерцание при выводе на канвас.


4-83799
xShadow
2003-03-28 14:36
2003.05.26
Как с помощью API функций изменять позицию курсора ???


1-83485
NetKnight
2003-05-15 14:09
2003.05.26
finfirst & findnext


14-83703
Manulo
2003-05-06 15:03
2003.05.26
*.h + Delphi = work


14-83672
pavel_k
2003-05-05 21:34
2003.05.26
Assembler лит-ра и инфа