Accueil > Silverlight, Silverlight 4 > [SL4] : Appels inter threads en WCF Data Services

[SL4] : Appels inter threads en WCF Data Services

Petite subtilité présente en mode Out Of Browser de Silverlight 4 lors de l’appel de services WCF Data Services.

En effet lorsque vous souhaitez ajouter des eléments à une ObservableCollection dans la callback du service, comme dans l’exemple ci dessous.

public class RecetteCollectionViewModel : ObservableCollection<RecetteViewModel>
	{
		private DataServiceQuery<Recette> query = null;

		public RecetteCollectionViewModel()
		{
			ModelContainer container = new ModelContainer(new Uri("http://localhost:51537/RecetteDataService.svc"));
			query = container.CreateQuery<Recette>("RecetteSet");
			query.BeginExecute(callback, null);
		}

		private void callback(IAsyncResult result)
		{
				List<Recette> recettes = query.EndExecute(result).ToList();

				foreach (Recette r in recettes)
				{
											Add(new RecetteViewModel()
						{
							Titre = r.Titre,
							DescriptionCourte = r.DescriptionCourte,
							Photo = r.Photo
						});
									}

		}

	}

Or lors du retour à la callback vous obtenez une erreur « Cross Thread Access »

Il aurrait été logique de rajouter le code suivant :

					App.Current.MainWindow.Dispatcher.BeginInvoke(delegate()
					{
//code à faire dans la callback
});

Mais vous devez utiliser le dispatcher provenant de Deployment en mode OOB :

Deployment.Current.Dispatcher.BeginInvoke(delegate()
			{
//code à faire dans la callback
			});
Publicités
Catégories :Silverlight, Silverlight 4
  1. Aucun commentaire pour l’instant.
  1. No trackbacks yet.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

%d blogueurs aiment cette page :