C# 刷新windows应用商店应用程序中的数据

C# 刷新windows应用商店应用程序中的数据,c#,windows-8,microsoft-metro,windows-store-apps,C#,Windows 8,Microsoft Metro,Windows Store Apps,我正在创建一个有一些Web服务调用的windows应用商店应用程序。目前我使用按钮事件进行Web服务调用,但我希望该应用程序每5分钟自动执行一次。 按钮事件现在放置在MainPage.xaml.cs中 执行此操作的最佳方法是什么windows应用商店应用程序中是否存在计时器事件 public async void GetWebServiceDataButton(object sender, RoutedEventArgs e) { ........ .......

我正在创建一个有一些Web服务调用的windows应用商店应用程序。目前我使用按钮事件进行Web服务调用,但我希望该应用程序每5分钟自动执行一次。 按钮事件现在放置在MainPage.xaml.cs中 执行此操作的最佳方法是什么windows应用商店应用程序中是否存在计时器事件

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

这里要粘贴的代码有点多,因此我将首先添加适当的链接,并为使用HTML/JS的用户提供相应的链接

对于使用HTML/JS的用户,请参见:

使用cs/xaml,尽管您仍然可以使用js来实现这一点,这取决于您想要实现这一点的方式:

有关重复计时器,请参见:

现在,在您的情况下,即使应用程序没有运行,您也需要这样做吗? 如果是这样,那么你需要一个后台任务,最多每15分钟左右运行一次

下面是一个基本的场景(来自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);

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


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

谢谢你的快速回复!起初我只需要应用程序运行的时间,但以后可能也需要实时互动程序。Adam在您的案例中没有提到的另一点是,您还可以在恢复处理程序中刷新。如果你有一个正在运行的计时器,如果你被暂停的时间超过这个时间间隔,其中一个计时器可能会触发,但无论如何,恢复处理程序都是一个刷新的好地方。谢谢@KraigBrockschmidt MSFT,你能详细说明一下“其中一个计时器可能会触发”吗?如果应用程序被挂起,在应用程序恢复之前,这些线程不会在那个时候(或接近它)被挂起吗?