Estoy tratando de reconstruir una aplicación de metrónomo anterior que se escribió originalmente usando MFC en C++ para escribir en .NET usando C#. Uno de los problemas con los que me estoy metiendo es conseguir que el temporizador "marque" con la precisión suficiente.Obtener tics precisos de un temporizador en C#
Por ejemplo, asumiendo un BPM (latidos por minuto) fácil de 120, el temporizador debe marcar cada 0,5 segundos (o 500 milisegundos). El uso de esto como base para los tics, sin embargo, no es del todo exacto ya que .NET solo garantiza que su temporizador no marque antes de que haya transcurrido el tiempo transcurrido.
Actualmente, para evitar el mismo ejemplo de 120 BPM utilizado anteriormente, estoy configurando los ticks a algo así como 100 milisegundos y solo estoy reproduciendo el clic en cada 5 tic del temporizador. Esto mejora bastante la precisión, pero si se siente como un truco.
Entonces, ¿cuál es la mejor manera de obtener tics precisos? Sé que hay más temporizadores disponibles que el temporizador de formularios de Windows que está disponible en Visual Studio, pero no estoy realmente familiarizado con ellos.
Pero entonces sólo se puede estar seguro de que el hilo se duerme al menos x millioseconds; el programador de hilos no certifica que el hilo se ejecutará en el recuento exacto de millesond – Wilhelm
Derecha. Estoy de acuerdo con lo que dijiste sobre no poder determinar la hora del próximo tic. El punto de lo que estoy diciendo es que no desea ejecutar el código del evento tick de un tic previo cuando se produce el siguiente tic. –