1

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

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

2 回答 2

2

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

对于使用 HTML/JS 的用户,请参阅: 在 Windows 8 应用程序中使用 setTimeout 的计时器

使用 cs/xaml 虽然您仍然可以为此使用 js,具体取决于您希望如何完成此操作: How to submit a work item using a timer

对于重复计时器,请参阅: 如何创建定期工作项

现在,在您的情况下,即使应用程序未运行,您是否也需要发生这种情况?如果是这样,那么您将需要一个最多每 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);
于 2013-02-20T19:20:32.857 回答
0

您可以使用系统事件后台任务,如果您希望在您的应用程序未运行时使其工作。

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

于 2013-02-22T04:32:39.500 回答