PDA

View Full Version : سوال: نحوه استفاده از thread ها در کامپوننت



M.Hashemi
جمعه 23 خرداد 1393, 01:53 صبح
با سلام
من یک کامپوننت خیلی ساده نوشتم اما به دلیل زمان بر بودن متود های ان می خواهم به صورت thread اجرا بشه که هم صفحه قفل نکنه و هم قابلیت کنسل داشته باشه.
برای این که هم خودم و هم اساتید محترم گیج نشیم به یک صورت دیگر بیان می کنم.
یک کامپوننت فرض کنید که تنها یک متود دارد به صورت زیر :

procedure exam;
var
i:integer;
begin
for i:=1 to 100
sleep(1000);
end;
اجرای این متود ۱۰۰ ثانیه طول میکشه که در این مدت صفحه فرم قابل دسترس نیست که این مشکل را با thread می توان حل کرد.
و حالا مشکل من:
من می خواهم در کد خود کامپوننت از tread استفاده کنم که نیاز نباشد بعد از گذاشتن کامپوننت بر روی صفحه فرم کد مربوط به tread را نوشت.
--
هر چی گشتم چیزی پیدا نکردم و خودم هم که تست می کنم چون توابع کامپوننت در کد create نمی شوند thread مربوطه ان توابع را نمی شناسد.
لطفا در این مورد توضیح دهید.

یوسف زالی
جمعه 23 خرداد 1393, 14:28 عصر
سلام.
اگر بخواهید ترد مربوطه به کامپوننت دسترسی داشته باشه، باید سینک کنید که کلا فلسفه ی استفاده از ترد زیر سوال می ره.
اما اگر فقط به متدهای مستقل می خواهید دسترسی داشته باشید، متدهای کامپوننت رو بصورت کلاس متد تعریف کنید.