Je viens de croiser un comportement inattendu avec DateTime.UtcNow tout en faisant quelques tests unitaires. Il semble que lorsque vous appelez DateTime.Maintenant/UtcNow en succession rapide, il semble pour vous redonner la même valeur pour un plus long que prévu intervalle de temps, plutôt que de capturer plus précis à la milliseconde à la fois.
Je sais qu'il est un Chronomètre de classe qui seraient mieux adaptés pour faire des précise les mesures de temps, mais j'étais curieux de savoir si quelqu'un pourrait expliquer ce comportement dans DateTime? Est-il un fonctionnaire de précision documenté pour le type DateTime.Maintenant (par exemple, précise à l'intérieur de 50ms?)? Pourquoi DateTime.Maintenant, être moins précis que ce que la plupart des CPU horloges pourrait-il gérer? Peut-être que c'est juste conçu pour le plus petit dénominateur commun de l'UC?
public static void Main(string[] args)
{
var stopwatch = new Stopwatch();
stopwatch.Start();
for (int i=0; i<1000; i++)
{
var now = DateTime.Now;
Console.WriteLine(string.Format(
"Ticks: {0}\tMilliseconds: {1}", now.Ticks, now.Millisecond));
}
stopwatch.Stop();
Console.WriteLine("Stopwatch.ElapsedMilliseconds: {0}",
stopwatch.ElapsedMilliseconds);
Console.ReadLine();
}