Como obter timestamp de precisão de escala em .NET / C #?

Até agora eu useiDateTime.Now para obter timestamps, mas notei que se você imprimirDateTime.Now em um loop, você verá que ele incrementa em saltos discretos de aprox. 15 ms. Mas para determinados cenários em meu aplicativo, preciso obter o timestamp mais preciso possível, de preferência com precisão de tick (= 100 ns). Alguma ideia?

Atualizar:

Pelo visto,StopWatch / QueryPerformanceCounter é o caminho a percorrer, mas só pode ser usado para medir o tempo, então eu estava pensando em chamarDateTime.Now quando o aplicativo é iniciado e, em seguida, só temStopWatch executar e, em seguida, basta adicionar o tempo decorrido deStopWatch para o valor inicial retornado deDateTime.Now. Pelo menos isso deve me dar um registro de tempo relativo preciso, certo? O que você acha disso (hack)?

NOTA:

StopWatch.ElapsedTicks é diferente deStopWatch.Elapsed.Ticks! Eu usei o primeiro assumindo 1 tick = 100 ns, mas neste caso 1 tick = 1 /StopWatch.Frequency. Então, para obter carrapatos equivalentes ao uso de DateTimeStopWatch.Elapsed.Ticks. Acabei de aprender isso da maneira mais difícil.

NOTA 2:

Usando a abordagem StopWatch, notei que fica fora de sincronia com o tempo real. Após cerca de 10 horas, estava à frente por 5 segundos. Então, eu acho que seria necessário sincronizá-lo a cada X aonde X poderia ser 1 hora, 30 min, 15 min, etc. Não tenho certeza qual seria o intervalo ideal para ressincronização, pois cada ressincronização mudaria o deslocamento que pode ser até 20 ms.

questionAnswers(10)

yourAnswerToTheQuestion