تفاوت DoEvents و Thread.Sleep
سلام دوستان
تفاوت 2 دستور زیر رو میشه توضیح بدید :
System.Threading.Thread.Sleep(1000);
Application.DoEvents();
دستور اولی 1000 ثانیه صبر میکنه و دستور بعدی رو اجرا میکنه درسته؟ دستور دومی چطور؟چقد صبر میکنه؟
درواقع میخواستم بعد اجرای یک دستوری حدودا مثلا چند ثانیه برنامم مکث کنه بعد دستور بعدی رو اجراکنه.
نقل قول: تفاوت DoEvents و Thread.Sleep
دستور دوم صرفا برای اینه که برنامه شما اگر کاری رو (مهم نیست چه کاری) در حال انجام داره تموم کنه ممکنه در حد میلی ثانیه باشه یا حتی زیاد بشه و اصلا ثابت نیست. برای منظور شما استفاده از همون sleep بهتره تا بدونید دقیقا چقدر باید صبر کنید و قابل تنظیم باشه
نقل قول: تفاوت DoEvents و Thread.Sleep
دستور دوم کارهای که تو صف کارهای محاسباتی مونده رو همون لحظه انجام میده برای اینکه بهتر دستور دوم رو درک کنی یه فرم بساز و یه textbox بنداز داخلش با یه دکمه. حالا تو دکمه کد بزن با یه حلقه for خیلی بزرگ مثلا 9999999 خوب بگو هر بار مقدار i تو حلقه فور هر عدید هست بریز تو textbox یه بار خالی همین کار رو بکن ببین یه بار دیگه بعد ریخن دستور
Application.DoEvents();
رو بزن میبینی بدون این دستور تو یه مکس میبینی و یهو آخرین عدد رو میبینی ولی زمانی که دستور دوم رو اضافه میکنی تمام تغییررات رو با سرعت بالا میبینی و هر بار دستوری که تو رم داری داره سریعا اجرا میشه.
نقل قول: تفاوت DoEvents و Thread.Sleep
یه پیشنهاد دارم وقتی از thread.sleep استفاده می کنید برنامه یجورایی قفل میشه بجاش میتونید از await Task.Delay(1000);
استفاده کنید دقت کنید که این ویژگی از دات نت 4.5 موجود هستش