PDA

View Full Version : سوال: استفاده از timer در thread



ahmad.khaliq
دوشنبه 30 آبان 1390, 18:07 عصر
با سلام

من میخوام در یک thread از تایمر استفاده کنم.

اما موقع ایجاد تابع onTimerHandler مشکل دارم.

اگر برای تابعش پارامتر (Sender: TObject) بزارم، موقع اجراش خطا میده و میگه Sender وجود نداره. اما اگه پارامتر ندم، باز هم خطای اجرا میده.


این هم بخش هایی از کد


ایجاد ترد:

type
TGetText = class(TThread)
public
Web_String: String;
timer: TTimer;
procedure onTimerHandler(Sender: TObject);
private
Params: TStringList;
IHTTP: TIDHTTP;
protected
procedure Execute; override;
end;



این کد تابع ontimerHandler



procedure TGetText.onTimerHandler(Sender: TObject);
begin
...
end;




اینم تابع excute



procedure TGetText.Execute;
begin
timer := TTimer.Create(mainform);
timer.Enabled := false;
timer.Interval := 1200;
timer.OnTimer := onTimerHandler(Sender: TObject);

timer.Enabled := true;

end;

vcldeveloper
دوشنبه 30 آبان 1390, 22:36 عصر
timer.OnTimer := onTimerHandler(Sender: TObject);
باید می نوشتید:


timer.OnTimer := onTimerHandler;

البته حتی در صورت درست نوشتن کد فوق هم تایمر شما کار نخواهد کرد، چون کامپوننت تایمر مبتنی بر پیام های ویندوز هست و در کد شما هیچ Message loop ایی برای دریافت و پردازش پیام های ویندوز دیده نمیشه.