Windows Phone 8.1中是否有BackgroundTask的替代方案?

时间:2014-07-09 11:52:50

标签: windows-phone windows-phone-8.1

我有一个Windows Phone 8.0应用程序,我正在移植到8.1。在8.0中,我依赖BackgroundWorker来执行我不想使用UI线程的任务。

我会创建BackgroundWorker,定义DoWork()委托,然后立即执行RunWorkerAsync()

现在在8.1中我不再使用BackgroundWorker了。相反,我需要创建实现IBackgroundTask的任务并使用IBackgroundTrigger对象运行它们。

似乎我需要跳过很多箍只是为了在不同的线程上运行代码。如果我想立即运行后台任务,我创建一个时间触发的后台任务,使用新的oneShot TimeTrigger(),新鲜度为0分钟?这似乎有点像黑客..

是否有BackgroundTask的替代方案?我应该以不同的方式接近我的要求吗?

1 个答案:

答案 0 :(得分:9)

要在不同的线程上运行任何内容,您只需要调用:

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

如果您想在不同线程中完成工作后想要做某事,也可以非阻塞地await进行此操作。

IBackgroundTask完全不同。如果您希望在某个事件上执行应用程序未运行时执行某些代码,则会使用此选项。例如,如果要每30分钟更新一次Live Tile,则可以使用后台任务执行此操作,并实现该界面。