PDA

View Full Version : تایمر یا حلقه ی بی نهایت



mousa1992
یک شنبه 28 خرداد 1391, 18:35 عصر
سلام دوستان عزیز
من برنامه ای دارم که توی اون باید به صورت مکرر یک سری از داده ها رو چک کنم که اگر تغییر داشتن دستوراتی رو انجام بدم و بخوام حساب کنم بیش از 20 تایمر توی برنامم باید بذارم!
ایا مشکلی برای سرعت و کارایی برنامه و سیستم عامل ایجاد نمیکنه
و ایا فرقی میکنه که از تایمر استفاده کنم یا حلقه ؟؟
متشکرم

Saeed_m_Farid
یک شنبه 28 خرداد 1391, 19:43 عصر
اولاً که %100 مشکل ایجاد میکنه! هر دو تاشون هم ...
ثانیاً معلومه که فرقی میکنه؛ حلقه بی نهایت؟؟؟ از کجا به ذهنتون رسید! سرعت و کارآیی برنامه رو که آفتابه میکنه هیچ! کل سیستم به گند کشیده میشه :دی
راه بهتر استفاده از BackgroundWorker (http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx) هست؛ یعنی شما به تعداد اون کارهایی که میخوای براشون تایمر بذاری BackgroundWorker درست میکنی و میذاری خودشون کارشون رو بکنن و ... یا Thread هایی درست میکنی که اون یک سری داده رو نظارت میکنن و وقتی تغییر کردند، Delegate (http://msdn.microsoft.com/en-us/library/ms173171.aspx) هایی که شما می نویسین رو فراخوانی کنند (نحوه ساده کار: #Worker Threads in C (http://www.codeproject.com/Articles/1280/Worker-Threads-in-C)) ...

lordvandad
یک شنبه 28 خرداد 1391, 20:45 عصر
من تازگی ها اومدم توی برنامه نویسی و اطلاعاتم کامل نیست. ولی توی این مورد تا جایی که مشکل شما رو متوجه شدم و خودم هم مشکل مشابه داشتم, باید بگم که مسلما وقتی یک timer شروع بشه و تا آخر برنامه دیگه متوقف نشه, این دقیقا یعنی انجام بینهایت یه کاری با سرعت مشخص... کلا از نظر من timer مخلوط شده delay و حلقه for هستش که حالا فکر کنم delay اینجا دیگه به اسم system.thread شناخته میشه... پس شما می تونی همون یک تایمر رو بزاری و هر وقت خواستی استارتش کنی و دیگه جایی متوقفش نکنی مگه اینکه ضروری باشه)
** ضمنا چون قراره لحظه به لحظه چک کنی, باید interval این تایمر مساوی 1 باشه.

(اساتید, اگه اشتباه گفتم بزارین به پای یه خرده تازه کاری :لبخند:)
:لبخندساده:

reza_ali202000
جمعه 09 تیر 1391, 04:26 صبح
سلام
اقا بنده تا 50 تا تایمر هم استفاده کردم هیچ مشکلی پیش نیومده. البته اگه خواسی این کارو بکنی باید الگورتیمهایی که تهیه کردی کاملا بهینه باشه. مثلا تقریبا اصلا از حلقه تو در تو استفاده نکنی. یا مثلا ایندکسهای کامبوباکس رو هی عوض نکنی.