检查布尔值之间的时间差
Checking the time difference between boolean values
我有一个名为 isPressed
的布尔值,它在所有键盘和鼠标按钮都处于活动状态时处于活动状态。我想要实现的是当 isPressed
布尔值为 true
时启动计时器(最好使用秒表 class)。当 isPressed
为 true 时保持计时器继续运行,一旦 isPressed
为 false
则停止计时器并获得差异。在它停止并且再次为真然后再次停止之后,将差异添加到先前的计时器。
我尝试使用此 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();
设置为全局。
我有一个名为 isPressed
的布尔值,它在所有键盘和鼠标按钮都处于活动状态时处于活动状态。我想要实现的是当 isPressed
布尔值为 true
时启动计时器(最好使用秒表 class)。当 isPressed
为 true 时保持计时器继续运行,一旦 isPressed
为 false
则停止计时器并获得差异。在它停止并且再次为真然后再次停止之后,将差异添加到先前的计时器。
我尝试使用此 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();
设置为全局。