آیا استفاده از چند تایمر در یک صفحه سرعت آن را کاهش می دهد ؟
به چه میزان ؟
مثلاً 3 تایمر در یک صفحه (حداکثر)
کاهش سرعت به اندازه ای هست که لازم به نظر برسد که تایمرها حذف شوند؟
آیا استفاده از چند تایمر در یک صفحه سرعت آن را کاهش می دهد ؟
به چه میزان ؟
مثلاً 3 تایمر در یک صفحه (حداکثر)
کاهش سرعت به اندازه ای هست که لازم به نظر برسد که تایمرها حذف شوند؟
دوست عزیز تایمر هم یه thread حساب میشه .
و هیچ تاثیری در کند شدن برنامه ندارد.
شما 1000 تا تایمر هم که داشته باشید که هر 1 میلی ثانیه فعال باشه هیچ روندی در اجرای برنامه نداره.
اون چیزی که برنامه ی شما رو کند می کنه دستورات هست.
مثلاً توی یک تایمر یه حلقه می زنیم که 3 ثانیه این حلقه به طول می انجامه و برنامه یه توقف نسبت به حلقه خواهد داشت.
درست متوجه نشدم یعنی چنین کدی ممکنه سرعت برنامه رو کاهش بده؟ کدی که داخل خود تایمر هست یا اینکه صرفاً زمانی که توی خود تایمر یه حلقه مثلاً for بذاریم؟
و با هر کلیک روی باتن دوباره تایمر فعال می شه
sec += 1;
timer1.Interval = 500;
if (sec > 6)
{
timer1.Enabled = false;
sec = 0;
objwrong.FlashPlayerForm.Close();
button1.Enabled = true;
}
private void button1_Click(object sender, EventArgs e)
{
objwrong = new wrong();
objwrong.Fwrong();
timer1.Enabled = true;
button1.Enabled = false;
}
این حرف اساس درستی نداره .دوست عزیز تایمر هم یه thread حساب میشه .
و هیچ تاثیری در کند شدن برنامه ندارد.
شما 1000 تا تایمر هم که داشته باشید که هر 1 میلی ثانیه فعال باشه هیچ روندی در اجرای برنامه نداره.
اولا به خاطر اینکه timer در thread دیگه ای اجرا نمیشه .
دوما تعداد timer ها بسته به نوع cpu و سیستم عامل متغیر است .
استفاده از Timer بستگی به نوع کاری است که قراره ما انجام بدهیم . در بعضی موارد بهترین گزینه در برخی دیگر بدترین گزینه !
ببخشید , معذرت می خوام , دیگه دانش و تجربیاتم رو به کسی نمی گم.
؟؟؟ میشه ما رو هم مطلع بفرمایید منظور شما چی هست ؟
دوست عزیز چی تایمر ها , سایکل های تایمر رو می فرمایید (این جوری باشه که سی پی یو های قدیمی توی محاسبه میلی ثانیه اشتباه می کنند) یا تعداد تایمر های قرار گرفته بر روی اشیاء
(که اینم به حافظه رم بستگی داره)
اینم من پیشاپیش خدمت دوستان عرض نمودم ...
باز هم از دوستان معذرت خواهی می کنم
سلام
ببینید تا اونجایی که میدانtimerیک thread نیست چون سرعت ثابت داره و رابطه مستقیم با ساعت سیستم دارد.
ولی در مورد سرعت باید عرض کنم که هیچ رابطه ای بین سرعت و ساعت سیستم برقرار نیست بلکه یک نوع گزینه برای پردازش میباشد و سرعت عملیات بستگی به کدهای مورد استفاده در پروسه تایمر دارد نه خود تایمر.
با سلام
دوست گرامی، یک تایمر داریم که مربوط به CPU و پایه IRQ 0 هست که ساعت کامپیوتر رو کنترل میکنه و اصلاً به این بحث ربطی نداره.
در مورد کنترل timer مطمئن نیستم ( هر چند که نباید فرق عمدهای داشته باشه)، اما اگه از System.Threading.Timer استفاده بشه قطعاً در یک Thread جداگانه قرار میگیره.
صبا صبوحی
بهتره به مستندات C++ در این مورد نگاهی بندازید . تا متوجه منظور من در مورد سیستم عامل باشید و cpu بشی .[]ببخشید , معذرت می خوام , دیگه دانش و تجربیاتم رو به کسی نمی گم.[/
توابع Api مربوط به SetTimer , Kill Timer نیز به دردت میخوره .
کسانی که مقداری visual C++ کار کرده باشند منظور مرا بهتر درک میکنند .
دوستان دست همگی درد نکنه
من به هر حال 4 تا تایمر تو بعضی از صفحاتم گذاشتم که واقعاً هم نمی شد کمترش کنم
THX
بله، اگر تعداد تایمرها در برنامه زیاد بشه سرعت میاد پایین. هم خودم این رو تجربه کردم و هم توی MSDN خوندم. باید توجه داشت که تایمرها جز منابع ویندوز محسوب میشن! البته مقدار پایین اومدن سرعت بستگی به دو چیز داره:
1) مقدار Interval تایمرها :
هر چه رویداد Tick تایمرها زود تر فراخوانی بشه، سرعت هم پایین تر میاد.
2) کد درون رویداد Tick: این هم که طبیعیه! هرچه کد سنگین تر باشه، سرعت هم به همون نسبت پایین تر میاد.
ضمنا تایمرها چند نوع دارند. اگر از تایمر موجود در ToolBox ویژوال استدیو استاده می کنید، باید توجه داشته باشید که این تایمرها در همون Thread برنامه اجرا میشن و Thread جداگانه ای براشون ساخته نمیشه، به نقل از MSDN (برای این کلاس: System.Windows.Forms.Timer)
A Timer is used to raise an event at user-defined intervals. This Windows timer is designed for a single-threaded environment where UI threads are used to perform processing. It requires that the user code have a UI message pump available and always operate from the same thread, or marshal the call onto another thread.
اما همون طور که دوستمون SabaSabouhi فرمودن، اگه با استفاده از System.Threading.Timer یک تایمر بسازیم، این تایمر در یک Thread دیگه اجرا میشه.
نقل از MSDN:
Use a TimerCallback delegate to specify the method you want the Timer to execute. The timer delegate is specified when the timer is constructed, and cannot be changed. The method does not execute on the thread that created the timer; it executes on a ThreadPool thread supplied by the system.