鉴于以下代码,我试图弄清楚这一点,刷新()是否需要在 UI 线程上发生?它似乎有效,我想知道 CollectionViewSource 是否实际上是一个线程感知/安全对象?它肯定具有支持调用正确线程的属性和方法,只是不确定这是否由开发人员决定,还是在对象内完成?
public CollectionViewSource UserList { get; private set; }
void setupCollections()
{
UserList = new CollectionViewSource();
UserList.Source = searchProvider.UserResults;
UserList.SortDescriptions.Add(new SortDescription("DisplayName", ListSortDirection.Ascending));
}
这个线程在 Silverlight 中是否安全???
void RefreshUserList()
{
UserList.View.Refresh();
}
或者你需要做这样的事情吗?
void RefreshUserList()
{
// Is This Required?
UserList.Dispatcher.BeginInvoke(() =>
{
UserList.View.Refresh();
});
// Or MVVM-light Method
DispatcherHelper.CheckBeginInvokeOnUI(() =>
{
UserList.View.Refresh();
});
}