Bu metod işaret edilen boolean değişkeni timeout süresince kontrol eder (bekler) , eğer değişken değer true olursa method sonlanır ve true döndürür timeout olursa gene sonlanır ve false değer döndürür.
Kod: Tümünü seç
uses SysUtils,Forms, DateUtils;
Kod: Tümünü seç
Function WaitForCondition(_Condition : Pointer; _TimeOut : Integer =30000) : Boolean;
var
aThen : TDateTime;
aBool : ^Boolean;
begin
Result := False;
aThen := Now;
aBool := _Condition;
while ( (not aBool^) and (MilliSecondsBetween(Now,aThen)<_TimeOut)) do
Begin
Sleep(150);
Application.ProcessMessages;
End;
if aBool^ then
Result := True;
end;
Kod: Tümünü seç
type
Tform1= class(TForm)
...
...
...
Button1: TButton;
Button2: TButton;
private
aBool : Boolean;
...
...
...
end;
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
begin
aBool := false;
ShowMessage('Kontrol başlıyor...');
if WaitForCondition(@abool) then
ShowMessage('Şart gerçekleşti')
else
ShowMessage('Zaman aşımı');
...
...
diğer işlemler.
end;
Kod: Tümünü seç
procedure TForm1.Button2Click(Sender: TObject);
begin
aBool := True;
end;
Zaten ihtiyacınız yokmuş demektir