در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

آموزش سی شارپ : کار با Thread ها قسمت 6 : کلاس Timer

خیلی وقت ها در برنامه ها نیاز است که کد ما در بازه های زمانی مشخص اجرا شود، برای مثال کدی که باید هر 5 ثانیه یا هر یک دقیقه یکبار اجرا شده و عملیات خاصی را انجام دهد، مانند نمایش تاریخ و ساعت در برنامه و یا بررسی ایمیل ها و مطلع کردن کاربر از ایمیل های جدید. برای شرایطی از این قبیل می توانیم از کلاس Timer که در فضای نام System.Threading قرار گرفته و وابسه به delegate ای با نام TimerCallback است استفاده کنیم. برای آشنایی بیشتر با این کلاس برنامه ای در محیط کنسول می نویسیم که زمان جاری را تا زمانی که کاربر کلیدی را فشار دهد بر روی خروجی نمایش می دهد. ابتدا یک متد با نام PrintTime به صورت زیر ایجاد می کنیم:

public static void PrintTime(object state)
{
    Console.WriteLine(DateTime.Now.ToString("hh:mm:ss"));
}

کار این متد نمایش تاریخ به صورت ساعت:دقیقه:ثانیه می باشد. دقت کنید که این متد یک پارامتر از نوع object و با نام state میگیرد. دلیل وجود این پارامتر به این خاطر است که TimerCallback که delegate مورد استفاده در کلاس Timer است متدی با این Signature قبول می کند. در قدم بعدی باید یک شئ از کلاس Timer ایجاد کنیم. علاوه بر اینکه باید TimerCallback را نیز ایجاد کنیم، کلاس Timer به عنوان سازنده به ما این اجازه را می دهد تا پارامترهای مورد نیاز برای آماده سازی Timer را به آن ارسال کنیم، مانند بازه زمانی که کد مورد نظر باید اجرا شود، شئ ای که به عنوان state در زمان فراخوانی متد مورد نظر به آن ارسال می شود و مدت زمان مکس قبل از اولین فراخوانی متد مشخص شده برای Timer. کد زیر را در متد Main می نویسیم:

static void Main(string[] args)
{
    TimerCallback callback = new TimerCallback(PrintTime);

    Timer timer = new Timer(callback, null, 0, 1000);
    Console.WriteLine("Press any key to terminate application...");
    Console.ReadKey();
}

همانطور که مشاهده می کنید ابتدا شئ ای از روی TimerCallback ایجاد کرده، در قدم بعدی کلاس Timer را به همراه پارامتر های مورد نیاز ایجاد کردیم. پارامتر ها به ترتیب:

  1. شئ ای از نوع TimerCallback
  2. شئ ای که برای state استفاده می شود که در کد بالا مقدار null ارسال شده است
  3. مقدار زمان مکس قبل از اولین فراخوانی متد مشخص شده برای Timer
  4. بازه های زمانی برای اجرای متد PrintTime که در اینجا 1000 میلی ثانیه یا 1 ثانیه یکبار است.

با اجرای کد بالا و تا زمانی که کلیدی را فشار ندهیم زمان جاری بر روی خروجی نمایش داده می شود:

Press any key to terminate application...
06:40:06
06:40:07
06:40:08
06:40:09
06:40:10
06:40:11

برای مشخص کردن state پارامتر دوم را می توانیم تغییر دهیم، برای نمونه کد PrintNumbers را به صورت زیر تغییر می دهیم:

public static void PrintTime(object state)
{
    Console.WriteLine(DateTime.Now.ToString("hh:mm:ss") + " {0}", state);
}

و سپس شئ مورد نظر را از متد Main به صورت زیر به سازنده Timer به عنوان پارامتر دوم ارسال می کنیم:

Timer timer = new Timer(callback, "State from Main Method!", 0, 1000);

با اجرای کد بالا خروجی به صورت زیر خواهد بود:

Press any key to terminate application...
06:42:10 State from Main Method!
06:42:11 State from Main Method!
06:42:12 State from Main Method!
06:42:13 State from Main Method!
06:42:14 State from Main Method!
06:42:15 State from Main Method!

از سری مباحث کار با Thread ها موضوع CLR ThreadPool باقی مانده که در قسمت بعد در مورد آن صحبت کرده و پس از آن کار با Task Parallel Library را شروع خواهیم کرد. ITPRO باشید

نویسنده: حسین احمدی

منبع: جزیره برنامه نویسی و توسعه نرم افزار وب سایت توسینسو

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی است

#مشکل_ایجاد_timer_در_سی_شارپ #multithreading_چیست #timerدر_سی_شارپ #برنامه_نویسی_multi-threaded #استفاده_از_timer_در_c# #استفاده_از_timer_در_سی_شارپ #مشکل_استفاده_از_timer_در__c# #کار_با_thread_ها_در_سی_شارپ #کلاس_timer_در_سی_شارپ #خطای_استفاده_از_timer_در_سی_شارپ
عنوان
1 آموزش سی شارپ : کار با Thread ها قسمت 1 : Process و Thread رایگان
2 آموزش سی شارپ :کار با Thread ها قسمت 2 : Asynchronous در Delegate رایگان
3 آموزش سی شارپ : کار با Thread ها قسمت 3 : System.Threading رایگان
4 آموزش سی شارپ : کار با Thread ها قسمت 4 : Foreground و Background رایگان
5 آموزش سی شارپ : کار با Thread ها قسمت 5 : رفع مشکل Concurrency رایگان
6 آموزش سی شارپ : کار با Thread ها قسمت 6 : کلاس Timer رایگان
7 آموزش سی شارپ : کار با Thread ها قسمت 7 : CLR ThreadPool رایگان
زمان و قیمت کل 0″ 0
0 نظر

هیچ نظری ارسال نشده است! اولین نظر برای این مطلب را شما ارسال کنید...

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره تابستانه می تونی امروز ارزونتر از فردا خرید کنی ....