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

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

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

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

закрыть

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

очень

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

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

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

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


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

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

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