Я пытаюсь перестроить старое приложение метронома, которое изначально было написано с использованием MFC на С++, написанное на .NET с использованием С#. Одна из проблем, с которыми я сталкиваюсь, заключается в том, чтобы таймер был достаточно "тик".
Например, если принять простой BPM (удары в минуту) 120, таймер должен указывать каждые 0,5 секунды (или 500 миллисекунд). Однако использование этого в качестве основы для тиков не совсем точно, так как .NET гарантирует, что ваш таймер не будет отмечен до истечения прошедшего времени.
В настоящее время, чтобы обойти это для того же самого примера 120 BPM, который использовался выше, я устанавливаю тики примерно на 100 миллисекунд и воспроизвожу только звук щелчка на каждом пятом таймере. Это немного улучшает точность, но если вы чувствуете себя немного взломанным.
Итак, каков наилучший способ получить точные клещи? Я знаю, что есть больше таймеров, чем таймер окон, который легко доступен в Visual Studio, но я не очень-то знаком с ними.