2013-02-20 26 views
1

我創建了一個windows應用程序,它具有一些web服務調用。目前我使用按鈕事件來進行web服務調用,但我希望應用程序每5分鐘自動執行一次。 按鈕事件現在放置在MainPage.xaml.cs 什麼是執行此操作的最佳方式是在Windows Store應用程序中有任何計時器事件?刷新Windows Store應用程序中的數據

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 2013-02-20 19:25:00

+0

亞當沒有提到你的情況的另一點是,你也可以刷新恢復處理程序。如果你有一個正在進行的計時器,那麼如果你被暫停的時間超過了這個時間間隔,那麼其中一個計時器可能會被觸發,但恢復處理器是一個在任何情況下刷新的好地方。 – 2013-02-20 20:01:07

+0

謝謝@ KraigBrockschmidt-MSFT能否詳細說明'其中一個可能會觸發'?如果應用程序被暫停,那麼這些線程是否會在該應用程序恢復之前暫停(或接近它)? – 2013-02-20 20:54:11

0

如果您希望在應用程序未運行時使用此功能,則可以使用系統事件後臺任務。

即使您的應用程序未運行,它也會至少每15分鐘喚醒一次。

相關問題