在Windows Phone中持续更新数据的最佳方法?

时间:2012-01-12 23:37:54

标签: c# timer windows-phone continuous

我正在尝试创建一个应用程序,它将从Web API获取数据并显示它,然后每隔5秒左右不断刷新数据,但我不知道这样做的最佳方法。

我的第一个想法只是一个简单的计时器,做了类似于this question所做的事情,但是我担心我可能搞砸了它并让计时器继续在后台运行时它不应该(就像用户离开页面一样)。我是否担心不会发生的事情?这是一个很好的方式来做我正在尝试做的事情,还是有更有效/安全的方式来做到这一点?

1 个答案:

答案 0 :(得分:2)

当您在应用程序外部导航时,计时器将无法继续,但当您导航到应用程序内的其他页面时,计时器将继续。你可以这样阻止它:

    System.Windows.Threading.DispatcherTimer dt;

    public MainPage()
    {
        InitializeComponent();
        dt = new System.Windows.Threading.DispatcherTimer();
        dt.Interval = new TimeSpan(0, 0, 0, 0, 1000); // 1000 Milliseconds
        dt.Tick += new EventHandler(dt_Tick);
    }

    protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
    {
        dt.Stop();
    }

    protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
    {
        dt.Start();
    }

    void dt_Tick(object sender, EventArgs e)
    {
        listBox1.Items.Add(listBox1.Items.Count + 1); // for testing
    }

    private void PageTitle_Tap(object sender, GestureEventArgs e)
    {
        NavigationService.Navigate(new Uri("/Page1.xaml", UriKind.Relative)); // for testing
    }

此外,如果您只是检查大部分时间未更改的数据,请考虑使用push notifications