我有一个Windows Phone 8.0应用程序,我正在移植到8.1。在8.0中,我依赖BackgroundWorker
来执行我不想使用UI线程的任务。
我会创建BackgroundWorker
,定义DoWork()
委托,然后立即执行RunWorkerAsync()
现在在8.1中我不再使用BackgroundWorker
了。相反,我需要创建实现IBackgroundTask
的任务并使用IBackgroundTrigger
对象运行它们。
似乎我需要跳过很多箍只是为了在不同的线程上运行代码。如果我想立即运行后台任务,我创建一个时间触发的后台任务,使用新的oneShot TimeTrigger()
,新鲜度为0分钟?这似乎有点像黑客..
是否有BackgroundTask
的替代方案?我应该以不同的方式接近我的要求吗?
答案 0 :(得分:9)
要在不同的线程上运行任何内容,您只需要调用:
Task.Run(delegate() {
// The work to be executed on the background thread
});
如果您想在不同线程中完成工作后想要做某事,也可以非阻塞地await
进行此操作。
IBackgroundTask
完全不同。如果您希望在某个事件上执行应用程序未运行时执行某些代码,则会使用此选项。例如,如果要每30分钟更新一次Live Tile,则可以使用后台任务执行此操作,并实现该界面。