检查布尔值之间的时间差

Checking the time difference between boolean values

我有一个名为 isPressed 的布尔值,它在所有键盘和鼠标按钮都处于活动状态时处于活动状态。我想要实现的是当 isPressed 布尔值为 true 时启动计时器(最好使用秒表 class)。当 isPressed 为 true 时保持计时器继续运行,一旦 isPressedfalse 则停止计时器并获得差异。在它停止并且再次为真然后再次停止之后,将差异添加到先前的计时器。

我尝试使用此 post 中的代码,但无法正常工作。我尝试做类似的事情:

Stopwatch stopWatch = new Stopwatch();
TimeSpan ts = stopWatch.Elapsed;
if (isPressed)
{
    stopWatch.Start();
}
else
{
    stopWatch.Stop();
    string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10);
    lblTime.Text = string.Format("{0}", elapsedTime);
}

lblTime 标签始终为 0。

我认为秒表可能是一项不必要的开销。您可以将时间isPressed 设置为true 并将时间isPressed 设置为false,然后进行计算。

    private long _pressedTicks;
    private long _durationTicks;

    private bool _pressed;

    public bool Pressed
    {
        get { return _pressed; }
        set
        {
            if (value == _pressed)
            {
                //Do nothing;
            }
            else if (value == false)
            {
                _durationTicks = DateTime.Now.Ticks - _pressedTicks;
                _pressed = value;
            }
            else
            {
                _pressed = value;
                _pressedTicks = DateTime.Now.Ticks;
            }
        }
    }

感谢@Andrey Nasonov,我实际上设法让它工作,我所要做的就是将 Stopwatch stopWatch = new Stopwatch(); 设置为全局。