属性 of { return 60000 / bpm } 总是 returning 600ms?

Property of { return 60000 / bpm } always returning 600ms?

我正在尝试构建一个稳定的节拍器,让每个节拍都滴答作响,但似乎有问题。

节拍器等待每个节拍的时间由以下公式确定:60000 / BPM

但是,无论您将什么值插入 BPM,该值似乎都是 return 特定数字。

我有一个 属性,它 return 是这个公式的值,还有一个 bpm 整数:

static private int bpm = 125;
static private int BeatLength
{
    get
    {
        return 60000 / bpm;
    }
}

static public int beat = 0;

这里是负责节拍器的函数(它在专用线程上运行):

public static void RhythmUpdate()
{
    lock (threadLock)
    {
        while (true)
        {
            Thread.Sleep(BeatLength); // Sleep until the next beat
            AddRequest(BeatLength * beat);
            beat++; 
            DefaultSounds.def_CowBell.Play();
            OnBeat?.Invoke();
        }
    }
}

断点 def_CowBell.Play(); 时,Visual Studio 指出循环需要大约 600 毫秒。这就是我知道价值的方式。

额外信息:

在此先感谢您的帮助。

事实证明,我一直在一个函数上设置 BPM,每当我对其初始化进行更改时,它就会被新的 BPM 覆盖。

public static void StartBeat(int startingBPM)
{
    rhythmThread = new Thread(new ThreadStart(RhythmUpdate)); // Initialize new thread
    bpm = startingBPM; // < This piece of codde was the source.
    rhythmThread.Name = "BeatThread";
    rhythmThread.Start(); // Start the thread
}

目前,我将在测试时禁用该行代码。