PDA

View Full Version : مشکل با ThreadTimer



Mask
چهارشنبه 05 اسفند 1388, 13:51 عصر
با سلام به همه دوستان.
بنده در برنامه ای از ThreadTimer آقای سالار خلیل زاده استفاده کردم.
چنتا مشکل برام پیش اومده.
اول اینکه خود ThreadTimer نمیتونه خودشو Enabled:=False کنه.
دوم اینکه این تایمر یدونه ترید اضافه می کنه. بنده اومدم و در قسمتی که برنامه هنگ می کنه(به علت اسکن شبکه) از این تایمر برای نمایش یه پنل wait استفاده کردم. اما باز هم پنل من قفل میشه. در صورتی که نمایش و حذف پنل رو این ThreadTimer بر عهده داره.
ممنون از جوابتون.

BORHAN TEC
پنج شنبه 06 اسفند 1388, 15:56 عصر
به نظر من بهتره در تابعي كه براي اسكن شبكه نوشته ايد دايماً از Application.ProcessMessage استفاده كنيد. بعني بعد از هر خط دستور.

BORHAN TEC
پنج شنبه 06 اسفند 1388, 16:10 عصر
البته يه نكته ديگه رو هم تو كتاب ماركو كانتو ديدم كه براي كار با كنترلهاي VCL در درون ترد بايد از تابع Synchronize استفاده كني. اين رويه يك پارامتر ورودي دارد و آن هم فراخواني يك رويه است. به عنوان مثال ممكن است در رويه اي به نام A نوشته باشيد Form3.show; وسپس مي توانيد از رويه Synchronize به شكل (A)Synchronize استفاده كنيد . مثال زير نحوه اين كار را به خوبي نشان ميدهد.