UUU
проблем с зависанием формы - нет.
у меня задержку нужно сделать внутри потока (паузу), чтобы главная форма при этом реагировала. Из потока, не вызовешь Application.ProccessMessage

А вот API функции можно вызвать, вот я и спрашиваю как их вызвать.
function waitWithMessageLoop(hEvent: THandle; dwTimeout: DWORD): boolean;
var
dwRet: DWORD;
msg: tagMSG;
lExit: boolean;
begin
if hEvent = 0 then
hEvent:= CreateEvent(nil, FALSE, FALSE, nil);
lExit:= true;
while(lExit) do begin
dwRet:= MsgWaitForMultipleObjects(1, hEvent, FALSE, dwTimeout, QS_ALLINPUT);
if (dwRet = WAIT_OBJECT_0) then begin
Result:= TRUE;
lExit:= false;
break;
end;
if (dwRet <> WAIT_OBJECT_0 + 1) then begin
Result:= false;
lExit:= false;
break;
end;
while( PeekMessage(msg, 0,0,0,PM_REMOVE)) do begin
TranslateMessage(msg);
DispatchMessage(msg);
if (WaitForSingleObject(hEvent, 0) = WAIT_OBJECT_0) then begin
Result:= TRUE;
lExit:= false;
break;
end;
if Form1.isExit then
lExit:= false;
break;
end;
end;
Result:= FALSE;
end;
Пробовал вышеуказанную функцию использовать:
waitWithMessageLoop(0, 60000);
Но внутри этой функции программа зацикливается.[/b]