0

是否可以在 Metro App UI 和 Metro App UI之间进行双向通信BackgroundTask

所需的功能如下:

  • 如果 Metro App 已关闭/暂停,BackgroundTask请继续执行所需的操作。
  • 如果 Metro App 已打开/恢复,BackgroundTask则继续执行所需的操作,但还会通知 Metro App,新数据可用。
  • Metro App 然后使用新数据更新其 UI。Metro App UI 允许用户采取某些操作。
  • 这些动作都Queued在记忆中。BackgroundTask监视此内存Queue并处理这些操作。

请告知这是否可能,或提出满足这些要求的设计。

4

2 回答 2

0

只需使用背景threadTask

Task.Factory.StartNew(() =>
{
   // Download data 
}).ContinueWith(t => 
{
   // Update UI
}, Scheduler.FromCurrentSynchronizationContext());

同步上下文中的ContinueWith很重要,因为您会从不同的线程更新一个异常ObservableCollection,您也可以使用Dispatcher来在 UI 线程上执行代码块。


上面的文字仍然显示原始答案:

此处链接的 MSDN 后台任务指南明确指出:

  1. 后台任务根本不应该更新 UI,除了通知等系统 UI
  2. 后台任务应通过持久存储与应用程序通信

您的问题需要通过为您的应用程序维护“新数据”存储来解决,后台工作人员将下载数据并将其写入此处,您的应用程序在恢复/打开时将检查并删除该数据,从而允许您更新 UI - 存储行为作为您的中间队列。

于 2013-04-07T21:13:58.527 回答
0

在这里找到了对BackgroundTasks的详细了解:

背景任务简介

这含蓄地回答了我的问题。

于 2013-04-14T08:32:11.623 回答