PDA

View Full Version : حرفه ای: استفاده از thread در یک Timer



rayangostar_co
چهارشنبه 05 شهریور 1393, 09:31 صبح
با سلام خدمت دوستان و اساتید محترم

من تو پروژم نیاز دارم تا یه کوئری و هر چند دقیقه یک بار اجراء کنم.

لطفا رهنمایی کنید چطور میتونم استفاده کنم

کاری که خودم انجام دادم اینکه یه Thread پیاده سازی کردم و کوئری خودم و تو رویداد Onexecute نویشتم.
بعد تو Timer تو رویداد OnTimer ایجادش کردم و استارتش میکنم.
مشکلی که دارم اینکه وقتی بعد زمانی معین Interval تایمر دوباره میخوام thread و استارت کنم خطای زیر برام اومد can not start on a running or suspended thread


procedure TMainForm.Timer1Timer(Sender: TObject);begin


if not(Assigned(MsgOnline)) then
begin


MsgOnline := TMsgOnline.Create(Common);
// MsgOnline.Suspended := true;
MsgOnline.FreeOnTerminate := true;
MsgOnline.command := 'Admin';
MsgOnline.OnMsgOnline := Self.DoMsgOnline;
MsgOnline.start;


end
else
begin
if MsgOnline.started then
begin
MsgOnline.Suspend;
MsgOnline.Terminate;
MsgOnline.Free;
end;
MsgOnline := TMsgOnline.Create(Common);
MsgOnline.command := 'Admin';
MsgOnline.OnMsgOnline := Self.DoMsgOnline;
MsgOnline.start;
grdAdminMsg.DataSource := Common.dsMsgAdmin;
end;


// MsgOnline.
// MsgOnline.Terminate;


end;

BORHAN TEC
چهارشنبه 05 شهریور 1393, 10:41 صبح
با سلام،
راحت ترین و بی دردسرترین کار ممکن استفاده از کامپوننت TJvThreadTimer از مجموعه JVCL است.
موفق باشید...

rayangostar_co
چهارشنبه 05 شهریور 1393, 11:36 صبح
با تشکر فراوان...