Melhor maneira de implementar uma alta resolução DateTime.UtcNow em c #?

Estou tentando implementar um serviço de tempo que relatará o tempo com uma precisão maior que 1 ms. Eu pensei que uma solução fácil seria fazer uma medição inicial e usar o StopWatch para adicionar um delta a ele. O problema é que este método parece divergir extremamente rápido do tempo de parede. Por exemplo, o código a seguir tenta medir a divergência entre o Wall Time e meu High Resolution Clock:

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);
    }
}

Eu estou divergindo a uma taxa de cerca de 2ms / minuto em hardware severo recente.

Existe outra facilidade de tempo em janelas que eu não estou ciente de que será mais preciso? Se não, existe uma abordagem melhor para criar um relógio de alta resolução ou uma biblioteca de terceiros que eu deveria estar usando?

questionAnswers(2)

yourAnswerToTheQuestion