Obtendo ticks precisos de um timer em C #

Estou tentando reconstruir um aplicativo de metrônomo antigo que foi originalmente escrito usando MFC em C ++ para ser escrito em .NET usando C #. Um dos problemas que estou enfrentando é fazer com que o timer "marque" com precisão suficiente.

Por exemplo, assumindo um BPM fácil (batimentos por minuto) de 120, o temporizador deve marcar a cada 0,5 segundos (ou 500 milissegundos). Usar isso como base para os ticks, no entanto, não é totalmente preciso, pois o .NET garante apenas que o cronômetro não funcionará antes do tempo decorrid

Atualmente, para contornar isso no mesmo exemplo de 120 BPM usado acima, estou definindo os ticks para algo como 100 milissegundos e apenas reproduzindo o som do clique em cada 5º temporizador. Isso melhora bastante a precisão, mas parece um pouco de hac

Então, qual é a melhor maneira de obter carrapatos precisos? Sei que há mais timers disponíveis do que o timer de formulários do Windows que está prontamente disponível no Visual Studio, mas não estou familiarizado com ele

questionAnswers(6)

yourAnswerToTheQuestion