متد Sleep از کلاس Thread
نام دوره: زبان سی شارپ مقدماتی
نویسنده: علی مقدم جاه (مدرس دوره)
متد Sleep از کلاس Thread چیست؟
در بعضی اوغات نیاز داریم تا طبق شرایطی خاص، CPU سرور را به مدت زمان مشخصی خاموش کنیم!
در اینصورت اجرا برنامه ما در آن چند ثانیه بصورت کلی stop شده و پس از سپری شدن آن مدت زمان مشخص شده، مجدد CPU فعال شده و ادامه برنامه شروع به اجرا شدن خواهد کرد.
برای استفاده از متد Sleep از کلاس Thread، باید ابتدا NameSpace آن را در بالای برنامه خود using کنیم:
using System.Threading;
حالا که NameSpace را به بالای برنامه خود اضافه کردیم، میتوانیم کلاس Thread را نوشته و با زدن دکمه dot (نقطه)، به متدهای این کلاس دسترسی پیدا کنیم.
فرض کنید که میخواهید توسط یک حلقه for، تعدادی ستاره را در هر خط بر اساس شماره دور حلقه چاپ کنید:
for (int m = 1; m <= 100; m++)
{
for (int i = 1; i <= m; i++)
{
Console.Write("*");
}
Console.WriteLine();
}
:خروجی
*
**
***
****
*****
******
**................
در مثال بالا از دو حلقه تو در تو استفاده شده که حلقه اول وظیفه تکرار عمل تا صد، و حلقه دوم وظیفه چاپ ستاره را با توجه به شماره دور حلقه اول (m) انجام میدهد.
دستور Console.WriteLine نیز به این علت استفاده شده که بخاطر وجود متد Write، ستارههای هر خط به یکدیگر نچسبند.
خب اگر کد بالا را در برنامه خود کپی کرده و اجرا کنید، میبینید که برای هر خط با توجه به نوع دور حلقه اول، تعدادی ستاره با سرعت بسیار بالای CPU سیستم شما چاپ میشوند.
برای اینکه این سرعت را کاهش دهیم، میتوانیم قبل از به اتمام رسیدن بلاک حلقه اول، از متد Sleep استفاده کنیم:
for (int m = 1; m <= 100; m++)
{
for (int i = 1; i <= m; i++)
{
Console.Write("*");
}
Console.WriteLine();
Thread.Sleep(1000);
}
نکته: ورودی متد Sleep که مدت زمان خاموشی SPU است، بر اساس واحد میلیثانیه است.
درنتیجه 1000ms برابر با 1s است.
باتوجه به اضافه کردن متد Sleep به کد بالا، پس از چاپ ستارهها در هر خط، برای شروع چاپ مجدد ستارهها در خط بعدی، cpu یک ثانیه خاموش شده و سپس با روشن شدن cpu، ستارههای خط بعدی چاپ میشوند.
جهت شرکت در دورههای زبان برنامه نویسی سیشارپ، از کد تخفیف heplc30 استفاده کنید.