Najlepszy sposób na wdrożenie DateTime.UtcNow o wysokiej rozdzielczości w C #?

Próbuję zaimplementować usługę czasu, która będzie raportować czas z większą dokładnością niż 1 ms. Myślałem, że łatwym rozwiązaniem będzie wykonanie wstępnego pomiaru i użycie StopWatch, aby dodać do niego deltę. Problem polega na tym, że ta metoda wydaje się bardzo rozbieżna od czasu ściany. Na przykład poniższy kod próbuje zmierzyć rozbieżność między czasem naściennym a moim zegarem wysokiej rozdzielczości:

public static void Main(string[] args)
{
    System.Diagnostics.Stopwatch s = new System.Diagnostics.Stopwatch();
    DateTime baseDateTime = DateTime.UtcNow;
    s.Start();
    long counter = 0;
    while(true)
    {
        DateTime utcnow = DateTime.UtcNow;
        DateTime hpcutcnow = baseDateTime + s.Elapsed;
        Console.WriteLine(String.Format("{0}) DT:{1} HP:{2} DIFF:{3}", 
            ++counter, utcnow, hpcutcnow, utcnow - hpcutcnow));
        Thread.Sleep(1000);
    }
}

Rozchodzę się w tempie około 2 ms / minutę na całkiem nowym serwerze.

Czy w oknach jest inny obiekt czasu, którego nie znam, który będzie bardziej dokładny? Jeśli nie, czy istnieje lepsze podejście do tworzenia zegara o wysokiej rozdzielczości lub biblioteki innej firmy, z której powinienem korzystać?

questionAnswers(2)

yourAnswerToTheQuestion