Estoy utilizando el marco de la hamaca para realizar llamadas de servicio asíncronas desde una aplicación de Silverlight a los servicios de descanso. En la devolución de llamada 'completada' estoy actualizando una ObservableCollection que está vinculada a un cuadro combinado en la vista.Acceso de hilos cruzados no válido en la aplicación Silverlight
Se está lanzando una excepción de 'Acceso cruzado no válido' en el controlador de eventos 'OnPropertyChanged'.
¿Esto se debe a que Hammock no está ejecutando la devolución de llamada en el hilo de la interfaz de usuario? ¿Si no, porque no? Eso parecería ser una funcionalidad que el marco debería manejar. ¿Me estoy perdiendo de algo? Estoy seguro de que no quiero manejar la invocación del subproceso de interfaz de usuario en cada controlador completo.
public void LoadMyData()
{
var request = new RestRequest();
request.Path = "MyRestUrlText";
var callback = new RestCallback(
(restRequest, restResponse, userState) =>
{
var visibleData = new ObservableCollection<MyDataType>();
var myData = JsonConvert.DeserializeObject<MyDataType[]> restResponse.Content);
foreach (var item in myData)
visibleData .Add(item);
this.MyBoundCollection = visibleData;
OnPropertyChanged("MyBoundCollection");
});
var asyncResult = _restClient.BeginRequest(request, callback);
}
Gracias
Estoy usando MVVM. Sabía que el único código que debe estar en el hilo de la interfaz de usuario es OnPropertyChanged. Pero no pensé en poner BeginInvoke allí. Gran sugerencia –