我正在创建一个具有一些webservice调用的Windows应用商店。当前我使用按钮事件来进行webservice调用,但我希望应用程序每5分钟自动执行一次。 按钮事件现在放在MainPage.xaml.cs中 执行此操作的最佳方法是Windows应用商店中是否存在任何计时器事件?
public async void GetWebServiceDataButton(object sender, RoutedEventArgs e)
{
........
.........
Retrieve data from web service
}
答案 0 :(得分:2)
这里粘贴的代码有点多,所以我先添加相应的链接,然后我也会为那些使用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);
答案 1 :(得分:0)
如果您在应用未运行时正在寻找此功能,则可以使用系统事件后台任务。
即使您的应用未运行,它也会每15分钟至少唤醒一次。