检查布尔值之间的时间差

时间:2015-09-29 23:50:15

标签: c# stopwatch

我有一个名为isPressed的布尔值,当所有键盘和鼠标按钮都处于活动状态时,该值处于活动状态。我想要实现的是当isPressed布尔值为true时启动计时器(最好使用秒表类)。虽然isPressed为真,但保持计时器正常运行,并且只要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。

2 个答案:

答案 0 :(得分:1)

我认为秒表可能是不必要的开销。您可以将时间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;
            }
        }
    }

答案 1 :(得分:0)

由于@Andrey Nasonov,我实际上设法让它工作,我所要做的就是实际设置Stopwatch stopWatch = new Stopwatch();全球。