2016-11-27 88 views
0

我有这个计时器在我的代码:有没有办法在Xamarin中取消正在运行的计时器?

  Device.StartTimer(TimeSpan.FromSeconds(100),() => 
      { 
       Device.BeginInvokeOnMainThread(() => 
       { 
        if (detailGrid.IsVisible == true) 
        { 
         getRandomPhase(); 
        } 
       }); 
       return false; 
      }); 

有没有办法,我可以(通过手势)取消计时器运行或中止以某种方式计时器的方法吗?

+0

你想停止计时器? ,返回false仅用于停止定时器 –

+0

改为使用AdvancedTimer - https://github.com/ufuf/AdvancedTimer – Jason

回答

2

定时器回调函数的返回值是一个布尔值,用于确定定时器是否应该继续运行或停止。如果定时器应该继续运行并从回调中返回,您可以使用私有变量来跟踪。

请检查该样品

private bool _isTimerStart = true; 

      private void StartTimers() 
      { 
       try 
       { 
        Device.StartTimer(new TimeSpan(0, 0, 1),() => 
        { 
         // do some code here 

         return _isTimerStart; 
        }); 
       } 
       catch {} 
      }  private void BtnStart_OnClicked(object sender, EventArgs e) 
      { 
       _isTimerStart = true; 
       StartTimers(); 
      } 

      private void BtnStop_OnClicked(object sender, EventArgs e) 
      { 
       _isTimerStart = false; 
      } 

此代码是从下面的博客张贴这显示了一个更详细的例子采取:http://www.c-sharpcorner.com/article/quick-start-tutorial-creating-universal-apps-via-xamarin-device-classcont/

+0

请将解决方案的相关部分复制到您的文章以供参考,以防万一链接失效。你仍然可以离开该网址来称赞作者。 – irreal

+0

确定,将更新相同 –

相关问题