当用户做某事(触摸StackPanel,在这种情况下),我需要开始某种类型的计时器(可能是DispatcherTimer,因为我在WPF中工作),如果在一定时间内再次发生另一次触摸,那么我我会叫一个方法.你可能猜到 - 这是实现双击功能.
我假设实现这一目标的最佳方法是使用线程(即子线程增加一个时间跨度,可以在任何时候再次触摸StackPanel时由主线程检查?)
谢谢,
担
您不需要启动另一个线程来执行此操作.
只需要记录第一次点击发生的时间戳并使用它.然后,您可以通过从当前时间减去此时间来计算时间跨度:
private DateTime _lastTap;
public void TapHandler()
{
DateTime now = DateTime.UtcNow;
TimeSpan span = now - lastTap;
_lastTap = now;
if (span < TimeSpan.FromSeconds(1)) {...}
}
Run Code Online (Sandbox Code Playgroud)
或者,正如@DannyVarod所建议的那样,您可以使用a Stopwatch来实现相同的结果(但具有更准确的时序):
private Stopwatch _stopwatch = new Stopwatch();
public void TapHandler()
{
TimeSpan elapsed = _stopwatch.Elapsed;
_stopwatch.Restart();
if (elapsed < TimeSpan.FromSeconds(1)) {...}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
578 次 |
| 最近记录: |