元々C++でMFCを使用して作成されていた古いメトロノームアプリケーションを、C#を使用して.NETで作成するように再構築しようとしています。私が直面している問題の1つは、タイマーを十分に正確に「チェック」することです。
たとえば、120の簡単なBPM(1分あたりのビート数)を想定すると、タイマーは0.5秒(または500ミリ秒)ごとにチェックする必要があります。ただし、これをティックの基礎として使用することは完全に正確ではありません。.NETは、経過時間が経過する前にタイマーがティックしないことを保証するだけだからです。
現在、上記で使用したのと同じ120 BPMの例でこれを回避するために、ティックを100ミリ秒のようなものに設定し、5番目のタイマーティックごとにクリック音のみを再生しています。これは精度をかなり向上させますが、ちょっとしたハックのように感じる場合。
それで、正確なダニを取得するための最良の方法は何ですか?Visual Studioですぐに利用できるWindowsフォームタイマーよりも多くのタイマーが利用できることは知っていますが、私はそれらにあまり詳しくありません。