Archive

Archive for juillet 2010

[SL4] : Photo 70 gigapixel grace à DeepZoom

Une petit exemple de l’utilisation de DeepZoom avec une photo impressionnante de 70 gigapixel
http://70gigapixel.cloudapp.net/

Publicités
Catégories :Silverlight, Silverlight 4

[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
			});
Catégories :Silverlight, Silverlight 4