Est-ce que thread-safe de CollectionViewSource de Silverlight?
-
26-09-2019 - |
Question
Je suis en train de comprendre cela, étant donné le code suivant, ne le Refresh () doivent se produire sur le thread d'interface utilisateur? Il semble fonctionner, et je me demande si le CollectionViewSource est en fait un fil conscient / objet sans danger? Il a certainement des propriétés et des méthodes pour soutenir l'appel sur le fil correct, pas sûr si cela est laissé à son développeur, ou si cela se fait dans l'objet?
public CollectionViewSource UserList { get; private set; }
void setupCollections()
{
UserList = new CollectionViewSource();
UserList.Source = searchProvider.UserResults;
UserList.SortDescriptions.Add(new SortDescription("DisplayName", ListSortDirection.Ascending));
}
Est-ce thread-safe dans Silverlight ???
void RefreshUserList()
{
UserList.View.Refresh();
}
Ou avez-vous besoin de faire quelque chose comme ça?
void RefreshUserList()
{
// Is This Required?
UserList.Dispatcher.BeginInvoke(() =>
{
UserList.View.Refresh();
});
// Or MVVM-light Method
DispatcherHelper.CheckBeginInvokeOnUI(() =>
{
UserList.View.Refresh();
});
}
La solution
Par la documentation de Microsoft sur ICollectionView Interface -. les détails de la classe de soutien ne sont pas connus, sauf que la méthode CreateView () crée cette
Je suggère que nous considérons toujours ce pas thread-safe et l'expédition au fil correct, bien que mon test du View.Refresh () au moins suggère qu'il est thread-safe.