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();
            });
    }
Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top