PDA

View Full Version : سوال: راهی بغیر از timer برای زمانبندی کارها وجود دارد؟



hamidsq
شنبه 03 دی 1390, 11:29 صبح
راهی بغیر از timer برای زمانبندی کارها وجود دارد؟ وچطور؟

mehdi.mousavi
شنبه 10 دی 1390, 11:40 صبح
راهی بغیر از timer برای زمانبندی کارها وجود دارد؟ وچطور؟

سلام.
نمیدونم منظورتون دقیقا چیه و چرا تاکید دارید که از Timer استفاده نکنید... اما بله، روش دیگه ای نیز برای اینکار وجود داره و اون استفاده از Task Scheduler در Windows هستش. این مقاله (http://www.codeproject.com/KB/cs/tsnewlib.aspx) جزییات این کارو براتون شرح میده. بر اساس همین مقاله، پروژه دیگه ای ایجاد شده که از Task Scheduler 1.0, 2.0 پشتیبانی میکنه (http://taskscheduler.codeplex.com/) و نسخه توسعه یافته ارائه شده در اون مقاله هستش.

موفق باشید.

hamidsq
یک شنبه 11 دی 1390, 13:07 عصر
از زمان ویندوز نمیخوام استفاده کنم. پس بهتره همون تایمر باشه
نگاه برنامه ی من پر از زمانبندیه برنامم خیلی سنگین نمیشه؟. ممکنه 5000 تا تایمر هم زمان کار کنه.

syntiberium
یک شنبه 11 دی 1390, 13:22 عصر
شما اگر نمی خواهید تایمر زیاد اضافه کنید باید برای کارهایی که می خواهید تابع بسازید و نام توابع را داخل یک تایمر صدا کنید و هر زمانی نخواهید تابعی اجرا شود باید از if استفاده کنید. تعدد تایمر ها فقط برای زمانی است که interval آن ها با هم فرق می کند یا تعداد فرم هایتان زیاد است اما در هر صورت فکر نکنم تایمر اونقدر ها باعث افت سرعت بشه .

zarrinnegar
یک شنبه 11 دی 1390, 13:24 عصر
میشه بپرسم چند تا از این زمان بندی هارو توضیح بدی؟
5000 تا نه 2 یا 3 تا شو توضیح بده لطفا

mehdi.mousavi
یک شنبه 11 دی 1390, 13:47 عصر
از زمان ویندوز نمیخوام استفاده کنم. پس بهتره همون تایمر باشه نگاه برنامه ی من پر از زمانبندیه برنامم خیلی سنگین نمیشه؟. ممکنه 5000 تا تایمر هم زمان کار کنه.

سلام.
5000 تایمر خیلی زیاده... در چنین شرایطی، روش استاندارد حل مساله، استفاده از Timer Wheel (https://www.ibm.com/developerworks/aix/library/au-lowertime/) هستش...

موفق باشید.

پاورقی: Timer Wheel در BCL پیاده سازی نشده، اما شاید بگردید، کدهایی رو پیدا کنید که اونو پیاده سازی کرده باشن (بطور مثال (http://www.koders.com/csharp/fid096A9D3352616B5B2383D8D61F7F21B71D394CD1.aspx?s =file))

hamidsq
سه شنبه 13 دی 1390, 18:09 عصر
شما اگر نمی خواهید تایمر زیاد اضافه کنید باید برای کارهایی که می خواهید تابع بسازید و نام توابع را داخل یک تایمر صدا کنید و هر زمانی نخواهید تابعی اجرا شود باید از if استفاده کنید. تعدد تایمر ها فقط برای زمانی است که interval آن ها با هم فرق می کند یا تعداد فرم هایتان زیاد است اما در هر صورت فکر نکنم تایمر اونقدر ها باعث افت سرعت بشه .

خوب این کار اصلا نشدنیه. چون اون وقت به تعداد زیادی if نیاز دارم بعد توی هر tick که 100 میلی ثانیه است باید کلی پردازش انجام بدم. روند برنامم رو سخت میکنه.

hamidsq
سه شنبه 13 دی 1390, 18:16 عصر
میشه بپرسم چند تا از این زمان بندی هارو توضیح بدی؟
5000 تا نه 2 یا 3 تا شو توضیح بده لطفا
من تقریبا 10 تا کلاس دارم که قراره
فرضا کلاس اول . 3 تا متغیر بولی داره . یک تابع وجود داره که با اجراش متغیر اول رو بعد از زمانی به true تبدیل میکنه . و با اجرای دوباره متغییر روم رو. . .
تو تمام کلاسام این هست. و البته تایمر های دیگه ی که این کار رو میکنه
حالا تو روند اجرای برنامه ممکنه 1000 تا شی بسازم نه این که نشه ازش استفاده کرد . ولی بهترین راه و میخوام

arash69
سه شنبه 13 دی 1390, 19:59 عصر
سلام،دقیقا منظورت رو نفهمیدم،ولی فکر کنم با thread مشکلت حل بشه. منظورم اینه که از multi threading استفاده کنی.