2014-07-09 68 views
3

我有一個Windows Phone 8.0應用程序,我將移植到8.1。在8.0中,我依賴BackgroundWorker來執行我不想使用UI線程的任務。在Windows Phone 8.1中是否有替代BackgroundTask的方法?

我會創造BackgroundWorker,定義DoWork()委託,然後立即執行RunWorkerAsync()

現在8.1我不能使用BackgroundWorker了。相反,我需要創建執行IBackgroundTask的任務並使用IBackgroundTrigger對象運行它們。

看來我需要跳過很多箍環才能在不同的線程上運行代碼。如果我想立即運行後臺任務,我創建了一個新的oneShot TimeTrigger()時間觸發的後臺任務,其新鮮度爲0分鐘?這似乎有點破解..

是否有替代BackgroundTask?我應該以不同的方式接近我的要求嗎?

回答

9

要在不同的線程上運行任何東西,所有你需要做的就是調用:

Task.Run(delegate() { 
    // The work to be executed on the background thread 
}); 

您也可以await這無阻塞的方式,如果你想在下班後做一些事情不同的線程已經完成。

IBackgroundTask是完全不同的東西。當您想在應用程序未運行時某些事件上執行某些代碼時使用它。例如,如果您想每30分鐘更新一次活動磁貼,則可以使用後臺任務來執行此操作,從而實現該界面。

+2

+1 * WP8.1 RT中的BackgroundTask *與WP8.0中的* BackgroundAgent *類似。至於BackgroundWorker和TAP - [這裏是一篇很好的文章](http://blog.stephencleary.com/2013/05/taskrun-vs-backgroundworker-intro.html)。 – Romasz

+0

如果我想更新我的位置到服務器,當應用程序暫停或前景時該怎麼辦? –

相關問題