刷新Windows Store应用程序中的数据

问题描述:

我创建了一个windows应用程序,它具有一些web服务调用。目前我使用按钮事件来进行web服务调用,但我希望应用程序每5分钟自动执行一次。 按钮事件现在放置在MainPage.xaml.cs 什么是执行此操作的最佳方式是在Windows Store应用程序中有任何计时器事件?刷新Windows Store应用程序中的数据

public async void GetWebServiceDataButton(object sender, RoutedEventArgs e) 
    { 
    ........ 
    ......... 
    Retrieve data from web service 
    } 

这里有很多代码粘贴在这里,所以我会先添加适当的链接,我也会提供给那些使用HTML/JS的人。

对于使用HTML那些/ JS见: Timers using setTimeout in a Windows 8 app

使用CS/XAML虽然你仍然可以使用JS这个取决于你想如何做到这一点: How to submit a work item using a timer

对于重复的计时器看到: How to create a periodic work item

现在在你的情况下,即使应用程序没有运行,你是否需要这种情况? 如果是这样,那么你需要它运行,每15分钟左右 Create and register a background task

最多一次一个后台任务所以基本情况如下(从MSDN页),但如果你想办法将其取消,在网站上也有提供。请注意,当您的应用程序被暂停或终止时(即您的应用程序已关闭或在大约五秒内不再是活动应用程序时,它将停止运行。


var period = TimeSpan.FromMinutes(5); 

var timer = ThreadPoolTimer.CreatePeriodicTimer((source) => 
    { 
     //do your query/work here 
     Dispatcher.RunAsync(CoreDispatcherPriority.High, 
     () => 
     { 
      // Now that work is done, safely access UI components here to update them 
     }); 
    }, period); 
+0

感谢您的快速回答!起初,我只是需要应用程序运行时,但后来也可能为活瓷砖。 – Zyberb 2013-02-20 19:25:00

+0

亚当没有提到你的情况的另一点是,你也可以刷新恢复处理程序。如果你有一个正在进行的计时器,那么如果你被暂停的时间超过了这个时间间隔,那么其中一个计时器可能会被触发,但恢复处理器是一个在任何情况下刷新的好地方。 – 2013-02-20 20:01:07

+0

谢谢@ KraigBrockschmidt-MSFT能否详细说明'其中一个可能会触发'?如果应用程序被暂停,那么这些线程是否会在该应用程序恢复之前暂停(或接近它)? – 2013-02-20 20:54:11

如果您希望在应用程序未运行时使用此功能,则可以使用系统事件后台任务。

即使您的应用程序未运行,它也会至少每15分钟唤醒一次。