4

我正在编写一个 Windows 8 商店应用程序,其中我有一个包含相当大的可观察集合的视图模型。每隔一段时间,我们就会从模型中得到一个事件,导致我们开始一个相当长的过程来更新可观察的集合。它工作得很好,除了当前进程正在 UI 线程中运行并且将 UI 锁定几秒钟,这对于 UI 开发来说是一个非常糟糕的做法......

我想将繁重的计算转移到一项任务中,以便在不阻塞 UI 的情况下进行计算,并且在 UI 线程上一次完成对可观察集合的更新。在 WPF 中,有一种机制允许在视图模型构造函数中使用以下代码完全做到这一点:

var myLock = new object();
var myList = new ObservableCollection<ItemType>();
BindingOperations.EnableCollectionSynchronization(myList, myLock);

然后将每个对可观察集合的更新包装在一个锁块中。我试图在 WinRT 中做同样的事情,但 BindingOperations 似乎没有这种方法。

在 WinRT 中是否有任何可接受的最佳实践来完成同样的事情?

谢谢,

4

0 回答 0