View Full Version : تفاوت DoEvents و Thread.Sleep
samiasoft
چهارشنبه 20 اردیبهشت 1396, 18:30 عصر
سلام دوستان
تفاوت 2 دستور زیر رو میشه توضیح بدید :
System.Threading.Thread.Sleep(1000);
Application.DoEvents();
دستور اولی 1000 ثانیه صبر میکنه و دستور بعدی رو اجرا میکنه درسته؟ دستور دومی چطور؟چقد صبر میکنه؟
درواقع میخواستم بعد اجرای یک دستوری حدودا مثلا چند ثانیه برنامم مکث کنه بعد دستور بعدی رو اجراکنه.
golbafan
جمعه 12 خرداد 1396, 02:55 صبح
دستور دوم صرفا برای اینه که برنامه شما اگر کاری رو (مهم نیست چه کاری) در حال انجام داره تموم کنه ممکنه در حد میلی ثانیه باشه یا حتی زیاد بشه و اصلا ثابت نیست. برای منظور شما استفاده از همون sleep بهتره تا بدونید دقیقا چقدر باید صبر کنید و قابل تنظیم باشه
ebrahim.rayatparvar
شنبه 13 خرداد 1396, 10:18 صبح
دستور دوم کارهای که تو صف کارهای محاسباتی مونده رو همون لحظه انجام میده برای اینکه بهتر دستور دوم رو درک کنی یه فرم بساز و یه textbox بنداز داخلش با یه دکمه. حالا تو دکمه کد بزن با یه حلقه for خیلی بزرگ مثلا 9999999 خوب بگو هر بار مقدار i تو حلقه فور هر عدید هست بریز تو textbox یه بار خالی همین کار رو بکن ببین یه بار دیگه بعد ریخن دستور
Application.DoEvents();
رو بزن میبینی بدون این دستور تو یه مکس میبینی و یهو آخرین عدد رو میبینی ولی زمانی که دستور دوم رو اضافه میکنی تمام تغییررات رو با سرعت بالا میبینی و هر بار دستوری که تو رم داری داره سریعا اجرا میشه.
barnamenevisjavan
شنبه 13 خرداد 1396, 11:26 صبح
یه پیشنهاد دارم وقتی از thread.sleep استفاده می کنید برنامه یجورایی قفل میشه بجاش میتونید از await Task.Delay(1000); استفاده کنید دقت کنید که این ویژگی از دات نت 4.5 موجود هستش
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.