2013-02-20 3 views
1

Я создаю приложение для магазина Windows, которое имеет некоторые вызовы webservice. В настоящее время я использую событие кнопки, чтобы совершать вызовы webservice, но я хочу, чтобы приложение выполняло это автоматически каждые 5 минут. Событие кнопки теперь помещается в MainPage.xaml.cs Каков наилучший способ выполнить это, есть ли событие таймера в приложениях для хранения Windows?Обновить данные в приложении для магазина Windows

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

ответ

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); 
+0

Спасибо за быстрый ответ! сначала мне просто нужно, когда приложение работает, но позже, возможно, также и для живых фрагментов. – Zyberb

+0

Еще один момент, который Адам не упомянул для вашего случая, - это то, что вы также можете обновить в обработчике возобновления. Если у вас есть постоянный таймер, вполне вероятно, что один из них будет срабатывать, если вы были приостановлены больше, чем этот интервал, но обработчик возобновления - отличное место для обновления в любом случае. –

+0

Благодаря @ KraigBrockschmidt-MSFT вы можете подробно остановиться на «вероятно, что один из них выстрелит»? Если приложение приостановлено, не будут ли приостановлены эти потоки в то время (или рядом с ним) до тех пор, пока приложение не будет возобновлено? –

0

Вы можете использовать фоновое задание System event, если вы хотите, чтобы это работало, пока ваше приложение не работает.

Он просыпается минимум каждые 15 минут, даже если ваше приложение не работает.

Смежные вопросы