次のコードを考えると、これを理解しようとしていますが、UI スレッドで Refresh() を実行する必要がありますか? 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();
});
}