IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Silverlight Discussion :

Vider ou desactiver le cache (Bitmap caching)


Sujet :

Silverlight

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    244
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 244
    Par défaut Vider ou desactiver le cache (Bitmap caching)
    Bonjour à tous.

    J'ai un très gros problème avec la gestion des images dans Silverlight. Il utilise le bitmap caching quand on souhaite afficher une image du net. Mais ce cache ne se vide apparement jamais.
    Mon appli est une visionneuse de photo stockées en BDD et accesible via un Httphandler (du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://localhost/Test/MonImage.axd?id=456
    ). Les photos sont donc mis en cache.

    Résultat: lenteurs et au final out of memory.

    Donc ma question est comment désactiver ce cache sous Silverlight (car la méthode classique sous WPF ne fonctionne pas car BitmapImage n'est pas la même classe)?

  2. #2
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    244
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 244
    Par défaut
    Je vois que ma question ne trouve pas de reponse. Voici donc ce que j'ai trouvé. Dans la MSDN, il est dit que des que l'on utilise une Uri comme source pour une image, Silverlight utilise le Bitmap Caching. L'autre moyen de définir une source est par Stream.

    La solution es donc de faite un HttpWebRequest en asynchrone et récuper la stream de response. Ainsi pas de problème de cache.

    Je met le tag résolue car je propose une solution de contournement. Maintenant, si quelq'un à la solution, je prend.

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 59
    Par défaut Solution encore plus simple
    Citation Envoyé par arasium Voir le message
    Je vois que ma question ne trouve pas de reponse. Voici donc ce que j'ai trouvé. Dans la MSDN, il est dit que des que l'on utilise une Uri comme source pour une image, Silverlight utilise le Bitmap Caching. L'autre moyen de définir une source est par Stream.

    La solution es donc de faite un HttpWebRequest en asynchrone et récuper la stream de response. Ainsi pas de problème de cache.

    Je met le tag résolue car je propose une solution de contournement. Maintenant, si quelq'un à la solution, je prend.

    Ayant été confronté au même problème je vous remercie pour cette solution.

    Voici une variante encore plus simple en Silverlight (l'utilisation du WebClient) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
                        try
                        {
     
                            var wc = new WebClient();
                            wc.OpenReadCompleted += (_s, _e) =>
                            {
                                if (_e.Error == null)
                                {
                                    int lengthInBytes = Convert.ToInt32(_e.Result.Length);
                                    var br = new BinaryReader(_e.Result);
                                    var buffer = new byte[lengthInBytes];
                                    using (br)
                                    {
                                        for (int i = 0; i < lengthInBytes; i++)
                                        {
                                            buffer[i] = br.ReadByte();
                                        }
                                    }
     
                                    var rawBytesStream = new MemoryStream(buffer);
                                    var img = new BitmapImage();
                                    img.SetSource(rawBytesStream);
                                    image.Source = img;
     
                                }
                            };
                            wc.OpenReadAsync(new Uri(adresse, UriKind.Absolute));
                        }
                        catch (Exception)
                        {
                        }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. DIV caché pas caché
    Par madmax54 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 26/11/2008, 21h20
  2. Aides sur les algos de gestion d'un cache ( un cache peut en cacher un autre . . . )
    Par smyley dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 21/12/2007, 22h59
  3. [C#] Vider le cache d'un client
    Par dupin40 dans le forum ASP.NET
    Réponses: 6
    Dernier message: 26/09/2007, 11h21
  4. Vider le cache des archives
    Par Thrystan dans le forum Debian
    Réponses: 4
    Dernier message: 30/06/2005, 10h55
  5. Vider ou désactiver le cache
    Par elievar dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/04/2005, 09h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo