我正在尝试创建一个应用程序,它将从Web API获取数据并显示它,然后每隔5秒左右不断刷新数据,但我不知道这样做的最佳方法。
我的第一个想法只是一个简单的计时器,做了类似于this question所做的事情,但是我担心我可能搞砸了它并让计时器继续在后台运行时它不应该(就像用户离开页面一样)。我是否担心不会发生的事情?这是一个很好的方式来做我正在尝试做的事情,还是有更有效/安全的方式来做到这一点?
答案 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。