我正在编写一个Windows 8商店应用程序,其中我有一个包含相当大的可观察集合的视图模型。每隔一段时间我们就会从模型中获得一个事件,这个事件会让我们开始一个很长的过程来更新可观察的集合。它工作得很好,除了当前进程在UI线程中运行并锁定UI几秒钟,这对于UI开发来说是一个非常糟糕的做法......
我想将繁重的计算移动到一个任务中,以便在不阻塞UI的情况下进行计算,并且在UI线程上一次一个地完成对可观察集合的更新。在WPF中,有一种机制允许使用视图模型构造函数中的以下代码完成该操作:
var myLock = new object();
var myList = new ObservableCollection<ItemType>();
BindingOperations.EnableCollectionSynchronization(myList, myLock);
然后将每个更新包装到锁定块中的observable集合中。我试图在WinRT中做同样的事情,但似乎BindingOperations没有这个方法。
在WinRT中完成同样的事情是否有任何可接受的最佳实践?
Thnx,