首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StopWatch没有停止

StopWatch没有停止
EN

Stack Overflow用户
提问于 2022-01-27 23:05:11
回答 1查看 72关注 0票数 0

我相信逻辑上有问题,但我就是搞不清楚是什么。我试图通过使用加速度计(手机移动)来计算用户行走的时间,如果3秒内没有移动,那么时间应该停止,如果用户再次开始移动,那么时间应该重新开始,并且它应该增加更早实现的时间,但是在没有移动之后,时间不会停止。

代码语言:javascript
复制
 public partial class Walking : ContentPage
{
    
    private double lastX;
    private double lastHandledX;
    private TimeSpan timeForRewards;

    Stopwatch stopWatch = new Stopwatch();
    public Walking()
    {
        InitializeComponent();
        Accelerometer.ReadingChanged += Accelerometer_ReadingChanged;
        
    }

    private void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
    {
       
       lastX = e.Reading.Acceleration.X;
      
        acc.Text = $"X: {e.Reading.Acceleration.X}";
    }

    private bool OnTimerTriggered()
    {
        if (lastX!=lastHandledX)
        {
            stopWatch.Start();
            walks.Text = "Yay I am walking";
        }
        else
        {
            stopWatch.Stop();
            timeForRewards += stopWatch.Elapsed;
            walks.Text = $"Oh, we've stopped walking! time: {timeForRewards}";
            
        }
        lastHandledX = lastX;   
        
        return true;
    }
    void StartWalking_Clicked(object sender, EventArgs e)
    {

        if (Accelerometer.IsMonitoring)
        {
            Accelerometer.Stop();
        }
        else Accelerometer.Start(SensorSpeed.UI);

        Accelerometer.ReadingChanged += Accelerometer_ReadingChanged;
        Device.StartTimer(new TimeSpan(0, 0, 2), OnTimerTriggered);


    }
  
}

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-27 23:20:27

使用Stopwatch.Restart()

停止时间间隔测量,的运行时间重置为零,并开始测量所花费的时间。

而不是Stopwatch.Start()

启动,或恢复,测量间隔的运行时间.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70886921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档