Странное поведение Thread.Sleep - C#

Узнай цену своей работы

Формулировка задачи:

Забавно, уже не первый раз встречаю такую вещь: делаю движение контрола по форме в цикле (самостоятельно, или по нажатым клавишам). Чтобы двигалось плавно, добавляю Thread.Sleep с каким-то маленьким значением - 1, 3, и т.д. Все прекрасно работает, но если закрыть программу, запустить что-нибудь тяжеловесное типа Photoshop, игрушки или рендеринга, поиграться и

закрыть

его, а потом снова запустить программу - Sleep(1) превращается в Sleep(100500) - все становится

очень

медленным, еле ползая по экрану. Процессор при этом работает точно так же, ресурсов больше не тратятся - просто паузы почему-то очень сильно растягиваются. С чем это может быть связано? Попробовал ради интереса повторить это на других компьютерах - та же ситуация, хотя возникает довольно случайным образом. Если есть какой-то простой и адекватный альтернативный способ сделать несколькомиллисекундую задержку - будет тоже круто)

Решение задачи: «Странное поведение Thread.Sleep»

textual
Листинг программы
  1.  
  2.         private void timer1_Tick(object sender, EventArgs e)
  3.         {
  4.             button1.Location = new Point(button1.Location.X + 1, button1.Location.Y);
  5.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.286 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут