.NETには 3 つのタイマー タイプがあることを認識しています ( Comparing the Timer Classes in the .NET Framework Class Libraryを参照)。メインスレッドがビジー状態の場合、他のタイプがドリフトする可能性があるため、スレッド化されたタイマーを選択しました。信頼できるものにする必要があります。
タイマーの制御でこのタイマーが機能する方法は別のスレッドに置かれるため、親スレッドがビジーでない場合は、親スレッドで完了した作業の開始に合わせて常に時を刻むことができます。
コンソール アプリケーションでのこのタイマーの問題は、タイマーが別のスレッドで動作している間、メイン スレッドが何もしていないため、アプリケーションが閉じてしまうことです。
while true
ループを追加しようとしましたが、タイマーがオフになるとメイン スレッドがビジー状態になります。