如何从外部事件中停止WP7上的计时器?

时间:2011-12-22 17:26:58

标签: windows-phone-7

我需要一个定时器,在5秒后将我重定向到另一个页面,问题是它每隔5秒将我重定向到这个页面,所以我需要停止它。如果我在tmr.Start()之后停止它它没有执行该事件。如何在事件OnTimerTick

中执行此操作
DispatcherTimer tmr = new DispatcherTimer();
tmr.Interval = TimeSpan.FromSeconds(5);
tmr.Tick += new EventHandler(OnTimerTick);
tmr.Start();

void OnTimerTick(object sender, EventArgs e)
{
  NavigationService.Navigate(new Uri("/lvlSet1/s1lvl3.xaml", UriKind.Relative));            
}

2 个答案:

答案 0 :(得分:4)

描述

两种可能的解决方案。

  1. 在课程级别创建DispatcherTimer实例,而不是在您的方法中创建。然后,您可以使用OnTimerTick方法访问它们。
  2. 您可以使用DispatcherTimer方法将发件人转换为OnTimerTick
  3. 样品

    <强> 1。溶液

        public class YourClass
        {
            DispatcherTimer tmr = new DispatcherTimer();
    
            public void YourMethodThatStartsTheTimer()
            {
                tmr.Interval = TimeSpan.FromSeconds(5);
                tmr.Tick += new EventHandler(OnTimerTick);
                tmr.Start();
            }
    
            void OnTimerTick(object sender, EventArgs e)
            {
                tmr.Stop();
                NavigationService.Navigate(new Uri("/lvlSet1/s1lvl3.xaml", UriKind.Relative));
            }      
        }
    

    <强> 2。溶液

        void OnTimerTick(object sender, EventArgs e)
        {
            ((DispatcherTimer)sender).Stop();
            NavigationService.Navigate(new Uri("/lvlSet1/s1lvl3.xaml", UriKind.Relative));
        } 
    

    更多信息

    MSDN: DispatcherTimer Class

答案 1 :(得分:1)

尝试像这样构建代码。是将您的计时器对象保留在范围内,以便在第一次滴答发生后停止它。

class SimpleExample
{
    DispatcherTimer timer;

    public SimpleExample()
    {
        timer = new DispatcherTimer();
        timer.Interval = TimeSpan.FromSeconds(5);
        timer.Tick += new EventHandler(OnTimerTick);
    }

    public void SomeMethod()
    {
        timer.Start();
    }

    void OnTimerTick(object sender, EventArgs e)
    {
        timer.Stop();
        NavigationService.Navigate(new Uri("/lvlSet1/s1lvl3.xaml", UriKind.Relative));            
    }
}