CollectionViewSource es seguro para subprocesos de Silverlight?
-
26-09-2019 - |
Pregunta
Estoy tratando de resolver esto, dado el siguiente código, no la necesidad de actualización () que se produzca en el subproceso de interfaz de usuario? Parece que funciona, y me pregunto si el CollectionViewSource es en realidad un objeto hilo consciente / seguro? Que sin duda tiene propiedades y métodos para apoyar a llamar en la secuencia correcta, pero no está seguro de si lo que queda hasta el desarrollador, o si esto se lleva a cabo dentro del objeto?
public CollectionViewSource UserList { get; private set; }
void setupCollections()
{
UserList = new CollectionViewSource();
UserList.Source = searchProvider.UserResults;
UserList.SortDescriptions.Add(new SortDescription("DisplayName", ListSortDirection.Ascending));
}
Es esto seguro de rosca en Silverlight ???
void RefreshUserList()
{
UserList.View.Refresh();
}
O es que hay que hacer algo como esto?
void RefreshUserList()
{
// Is This Required?
UserList.Dispatcher.BeginInvoke(() =>
{
UserList.View.Refresh();
});
// Or MVVM-light Method
DispatcherHelper.CheckBeginInvokeOnUI(() =>
{
UserList.View.Refresh();
});
}
Solución
Documentación de Microsoft por el CollectionViewSource el objeto CollectionViewSource no es seguro para subprocesos. Parece que esto no es informado de que Hilo de seguridad, a pesar de que no parece funcionar en muchas situaciones.
Esto puede ser debido a que el método que se llama en realidad está en la vista, no el CollectionViewSource. La vista devuelve un ICollectionView interfaz -. no se conocen los detalles de la clase de apoyo, excepto que el método CreateView () crea este
Yo sugeriría que siempre tenemos en cuenta que esto no seguro para subprocesos y despacho a la secuencia correcta, a pesar de mis pruebas de la View.Refresh () por lo menos sugiere que es seguro para subprocesos.