
نوشته شده توسط
مجتبی تاجیک
... همونطور که گفتم کدهای فراخوانی شده تو ترد تا زمان Terminate نشدن ترد مکررا تکرار میشن ، پس اگر مشکلی تو برنامه ایشون هست از پیاده سازی تردشون هست که باید بررسی بشه .
من متوجه منظور شما نشدم، یعنی چی "مکررا تکرار میشن"؟ مکرراً چجوری و با چه فواصل زمانی تکرار میشن؟ باید لوپ تو کد باشه که تکرار بشه دیگه همینجوری که تکرار نمیشه، مثلاً کد زیر فقط یک خط به لیست باکس اضافه میکنه :
unit TestThread;
interface
uses
SysUtils,
Classes;
type
TTestMyTh = class(TThread)
private
procedure UpdateCaption;
protected
procedure Execute; override;
end;
implementation
uses Unit1;
{ TestMyTh }
procedure TTestMyTh.UpdateCaption;
begin
Form1.ListBox1.Items.Add(FormatDateTime('yyyy/dd/mm hh:nn:ss.zzz > Row!!!', Now));
end;
procedure TTestMyTh.Execute;
begin
Synchronize(UpdateCaption);
end;
end.
برای اینکه در فواصل 0.5 ثانیه ای (مثلاً) خط جدید رو به لیست باکس اضافه کنه باید یه چیزی مثل کد زیر بنویسیم :
procedure TTestMyTh.Execute;
begin
FreeOnTerminate := True;
while not Terminated do
begin
Synchronize(UpdateCaption);
Sleep(500);
end;
end;