0

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

我的第一个想法只是一个简单的计时器,就像在这个问题中所做的那样,但我担心我可能会把它搞砸并让计时器在不应该的时候继续在后台运行(比如如果用户离开页面)。我是否担心某些实际上不会发生的事情?这是做我想做的事情的好方法,还是有更有效/更安全的方法?

4

1 回答 1

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
    }

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

于 2012-01-12T23:51:29.733 回答