Je vous propose un petit tour d’horizon sur le stockage d’images dans l’Isolated Storage.
Pour rappel, l’Isolated storage est l’emplacement réservé à votre application Windows Phone pour le stockage de fichiers.
Quelles sont les implémentations qui permettent de récupérer une image déjà stockée dans cet espace ? Quelles sont les méthodes les plus efficaces ?
L’implémentation classique (Windows Phone 7)
C’est l’implémentation standard « old school » : j’utilise GetUserStoreForApplication() et OpenFile pour lire un Stream. Le Stream est ensuite lu par le BitmapImage et renvoyé dans une Action.
public static void LoadImageFromStorage(string name, Action<BitmapImage> actionBitmap) { using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication()) { if (myIsolatedStorage != null && myIsolatedStorage.FileExists(name)) { IsolatedStorageFileStream fileStream = myIsolatedStorage.OpenFile(name, FileMode.Open, FileAccess.Read); { Deployment.Current.Dispatcher.BeginInvoke(() => { BitmapImage bitmapSource = new BitmapImage(); bitmapSource.SetSource(fileStream); if (actionBitmap != null) actionBitmap(bitmapSource); }); } } } }
Remarque 1
BitmapImage nécessite de s’exécuter dans le ThreadUI principal, pour cela, on utilise
Deployment.Current.Dispatcher.BeginInvoke(() =>