現在、条件が満たされているかどうか(適切な分と秒)を確認するために100ミリ秒ごとにautoRing関数を呼び出すタイマーコールバックがあります。条件が満たされている場合は、関数btnSound_click(ベルを鳴らします)を呼び出します
問題は、ベルを 1 回だけ鳴らしたい (その後、自動的に再度鳴らす必要があるが、必要な呼び出し間隔は 30 秒以上) ことですが、問題は、autoRing が複数回呼び出され、その中でベルが複数回鳴ることです。 1 秒の時間枠。
ボタンを押すと、次のコードが実行されます。
timerSound = new Timer(new TimerCallback(autoRing), null, 0, 100);
と私の autoRing 関数:
private void autoRing(Object obj)
{
TimeSpan ts = timeWatch.Elapsed;
if (ts.Minutes == bellMinutesFirst && ts.Seconds == bellSeconds || ts.Minutes == bellMinutesSecond && ts.Seconds == bellSeconds)
{
btnSound_Click_1(null, null);
}
timeWatch は単なるStopwatch
クラスであり、bellMinutesFirst
//は単なる定数 (整数) です。bellSeconds
bellMinutesSecond
timercallback を 1000ms に変更しようとしましたが、2 つの問題があります。
リングは、私が望むほど正確ではありません。
一貫性がなく、2 つのリングが聞こえることもあります。
どんな助けでも大歓迎です。