» Utilizator
Salut, vizitatorule!

SkullBox este o comunitate formata din programatori si administratori de sisteme sau retele care iti sta la dispozitie cand ai o problema legata de calculatoare. Daca esti un utilizator existent, autentifica-te.

Daca nu te-ai inregistrat inca pe forum, alatura-te noua astfel marind comunitatea si ajutandu-i pe cei care au nevoie de informatii.

Daca te-ai inregistrat dar inca nu ai primit codul de activare, il poti cere aici.




Autentifica-te cu numele de utilizator si parola pentru a putea posta pe forum sau pentru a accesa ariile disponibile doar utilizatorilor inregistrati.
» Promovam
» Parteneri » Statistici
  • 59618 de mesaje.
  • 7134 de topicuri.
  • 1045 de utilizatori.
  •  
  • andrei21deva e ultimul utilizator inregistrat.
[Detalii]

 
Pagini: [1]
Print
WaitableTimer [Delphi] [710 afisari]
DarkByte
*


Mesaje: 3333
OfflineOffline

WWW

O alternativa API la TTimer-ul din Delphi ar fi crearea unui Waitable Timer, care, cel putin aparent, are o rezolutie mai buna.

Un waitable timer blocheaza executia thread-ului in care e folosit pentru o durata specificata de timp.

Mai jos am pus un exemplu de folosire, in Delphi, a unui asemenea timer.

Code:
procedure TForm1.WaitableTimer;
const sec = 10000000;
var wTimer, lBusy : Longint;
    interval : LARGE_INTEGER;
begin
  wTimer := CreateWaitableTimer(nil, True, PANSIChar('myWaitableTimer' + IntToStr(GetTickCount)));
  {e o idee buna sa-i dam un nume unic - dar poate avea si nume gol}

  interval.QuadPart :=  - sec * 3; {numarul de secunde}
                                   {valoare negativa = valoare relativa}
                                   {valoare pozitiva = valoare absoluta}

  Repeat
    SetWaitableTimer(wTimer, TLargeInteger(interval), 0, nil, nil, false);
    lBusy := WaitForSingleObject(wTimer, INFINITE);
    If lBusy = WAIT_OBJECT_0 Then
      Begin
        Do_Something; {aici se pune codul care se doreste executat la fiecare X secunde}
        {e o idee buna sa se puna aici si o conditie de terminare a buclei :) }
      End;
  Until False;

  CancelWaitableTimer(wTimer);

  CloseHandle(wTimer);
end;
Happy programming Smile
Logged

Document my code? Why do you think it's called "code"?

To think is to differ - Clarence Darrow
14-05-2008, 11:58 Twitt ::
Reclama
VIP

Hosting

Mesaje: 25.90
OnlineOnline

WWW
 

   Pe ABCDomenii: 250MB spatiu + 20GB trafic + 5 subdomenii = 0.95 €
 
 

The problem with troubleshooting is that trouble shoots back.
Azi 
Pages: [1]
Print
SkullBox Forum  |  Development  |  Delphi & Pascal  |  Pascal / Delphi Snippets  |  Topic: WaitableTimer [Delphi]
Jump to: