Почему Thread.Sleep ожидает дольше, чем запрошено, когда работают другие приложения?
У меня есть небольшая проблема, связанная с многопоточностью в C #. По какой-то причине мой поток ускоряется с задержки 32 мс до 16 мс, когда я открываю Chrome, когда я закрываю Chrome, он возвращается к 32 мс. я используюThread.Sleep(1000 / 60)
для задержки. Может кто-нибудь объяснить, почему это происходит, и, возможно, предложить возможное решение?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace ConsoleApplication2
{
class Program
{
static bool alive;
static Thread thread;
static DateTime last;
static void Main(string[] args)
{
alive = true;
thread = new Thread(new ThreadStart(Loop));
thread.Start();
Console.ReadKey();
}
static void Loop()
{
last = DateTime.Now;
while (alive)
{
DateTime current = DateTime.Now;
TimeSpan span = current - last;
last = current;
Console.WriteLine("{0}ms", span.Milliseconds);
Thread.Sleep(1000 / 60);
}
}
}
}