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

Windows Forms Discussion :

consommation de mémoir sqlserver+image


Sujet :

Windows Forms

  1. #1
    Membre habitué Avatar de salihovic
    Inscrit en
    Février 2007
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 255
    Points : 135
    Points
    135
    Par défaut consommation de mémoir sqlserver+image
    salut
    j'ai une application qui se connecte a sql server dans le but d'afficher des images et d'enregistrer dans une table.
    mon problème c'est avec les grandes images
    quand je charge une image depuis la base je l'enregistre sur le disque puis je l'affiche
    le problème c'est après accumulation d'images sql server augmente toujours sa consommation en ram malgrès que je ferme a chaque foi la connection et je fait dispose des objets utilisés

    voici mon code de la forme:
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
     private void button1_Click(object sender, EventArgs e)
            {
     
                if (pictureBox1.Image != null)
                    pictureBox1.Image.Dispose();
                              SqlCommand cmds = new SqlCommand();
                              cmds.CommandText = "sp_select_pic_data";
                              cmds.CommandType = CommandType.StoredProcedure;
                              cmds.Connection = con;
                              SqlParameter p = new SqlParameter();
                              p.Value = int.Parse(num.Text);
                              p.Direction = ParameterDirection.Input;
                              p.SqlDbType = SqlDbType.BigInt;
                              p.ParameterName = "npic";
                              SqlParameter p2 = new SqlParameter();
                              p2.Value = int.Parse(pic.Text);
                              p2.Direction = ParameterDirection.Input;
                              p2.SqlDbType = SqlDbType.BigInt;
                              p2.ParameterName = "c000";
                              cmds.Parameters.Add(p);
                              cmds.Parameters.Add(p2);
                              MemoryStream ms=null;SqlDataReader d=null;
                              try
                              {
                                  con.Open();
                                   d= cmds.ExecuteReader();
     
                                  if (d.Read())
                                      ms = new MemoryStream((Byte[])d[0]);
                                  d.Close();
     
                              }
                              catch (Exception r)
                              {
                                  MessageBox.Show(r.Message);
                              }
                              finally
                              {
                                  d.Dispose();
                                  d = null;
                                  con.Close();
                                  cmds.Dispose();
                                  cmds = null;
                              }
                              try
                              {
                                  Image im = Bitmap.FromStream(ms);
                                  if (File.Exists(Application.StartupPath + "\\nom.jpg"))
                                      File.Delete(Application.StartupPath + "\\nom.jpg");
                                  im.Save(Application.StartupPath + "\\nom.jpg", ImageFormat.Jpeg);
                                  ms.Close();
                              ms.Dispose();
                              ms = null;
                              }
                              catch (Exception m)
                              {
                                  MessageBox.Show(m.Message);
                              }
            }
    ceci pour charger une image de la base
    je recupère deux images une grande et sa miniature qui est très petite mais le traitement c'est sur la grade
    et ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     if (pictureBox1.Image != null)
                    pictureBox1.Image.Dispose();
                pictureBox1.Image = Image.FromFile(Application.StartupPath + "\\nom.jpg");
    pour charger l'image au picturebox

    si quelqu'un a une solution merci pour m'aider

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Points : 627
    Points
    627
    Par défaut
    Salut,

    deja ta derniere image n'est pas disposée, et tu devrais passer ton nettoyage de memorystream dans un finally.

    Ensuite est ce que la consommation de memoire est vraiment importante ? Pour les objets de grandes tailles, la recuperation n'est pas forcement immediate (comme les autres tas).

  3. #3
    Membre habitué Avatar de salihovic
    Inscrit en
    Février 2007
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 255
    Points : 135
    Points
    135
    Par défaut
    bon pour le dispose de l'image je l'ai fait mais il change pas grande chose au niveau de sqlserver mais c'est au niveau de l'application
    mon problème c'est que a chaque foi que je charge une image de sql server l'utilisation de mémoire augmente et elle ne diminue pas

    je fait arrêter le service de sql server a chaque foi pour retravailler
    en plus même si j'attends un car d'heur il y a aucun changement

Discussions similaires

  1. Java et consommation de mémoire swap
    Par hugo123 dans le forum Langage
    Réponses: 5
    Dernier message: 28/01/2009, 01h05
  2. [C][méthodologie]Mettre en mémoire les images d'un programme 2d
    Par yetimothee dans le forum Développement 2D, 3D et Jeux
    Réponses: 15
    Dernier message: 05/06/2008, 23h21
  3. Grosse consommation de mémoire au démarrage
    Par guenievre dans le forum Java ME
    Réponses: 7
    Dernier message: 10/10/2007, 11h36
  4. Réponses: 6
    Dernier message: 23/02/2007, 21h20
  5. Problème de mémoire Affichage images
    Par Repti dans le forum C++Builder
    Réponses: 6
    Dernier message: 29/03/2004, 20h06

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