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 :

Problèmes de bitmaps et processus (IO).


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 9
    Par défaut Problèmes de bitmaps et processus (IO).
    Bonjour,

    J’ai un problème agaçant de processus avec le logiciel que je développe.

    Mon logiciel, en gros, gère des animations image par image. Lorsque je charge un projet (dans mon logiciel même et non dans Visual Studio), tout va bien, il charge les diverses informations d’un fichier .csm quelconque (un fichier de données binaires que je crée moi même) ainsi que toutes ses images png portant le même nom suivi d’un nombre de 0 jusqu’à X (ces images se situent dans un dossier portant, encore une fois, le même nom que le fichier .csm d’origine). Lors du charmement, il place ses images dans une liste de sprites (une classe qui contient le bitmap et d’autres informations). Au moment où le projet sauvegarde et que la liste des sprites a été modifiée (sprites effacés ou déplacés). Les images, sur le disque dur, se retrouveront dans le même ordre grâce aux nombres (et s'il sont réorganiser par nom bien sur). Certaines images vont être détruites ou renommées pour actualiser l’ordre des images du dossier. Il est justement là mon problème, mon logiciel ne veut pas toucher aux images que j’ai chargées précédemment… La raison est que les fichiers images sont supposément déjà utilisés par un autre processus. Par lequel? Je n’en ai aucune idée.

    Normalement, lorsque j’importe une image en mémoire en instanciant un objet bitmap il ferme son flux. Non? Aussi, si une image était vraiment utilisée par un autre processus, je ne serais même pas supposé être capable de la visionner via Paint ou n’importe quel autre logiciel similaire pas vrai ? Pourtant, j’y arrive.

    Est-il possible de vérifier d’où vient ce processus déjà utilisé à l’instant du IOException?

    Je ne sais vraiment pas d’où pourrait venir ce problème.

  2. #2
    Membre éclairé
    Étudiant
    Inscrit en
    Janvier 2004
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2004
    Messages : 279
    Par défaut
    Convertis-tu ton image chargée en "Image" ou en "Bitmap". Tu parles de Bitmap, je suppose donc qu'une fois ton image chargée, elle est castée/convertie de la sorte ?

    Sinon, j'ai déja eu un problème similaire au tiens.

    En gros, mon application devait sauvegarder l'image que j'avais chargée dans mon application, sous le même nom et la même extension.

    Le problème, c'est que Windows la considère comme utilisée par ton application en cours.

    Pour t'en convaincre, essaye d'enregistrer une autre image dans le répertoire et le nom d'une image déja existante mais qui n'a pas encore été chargée par ton application. Ca marchera.

    A toi de libèrer correctement les ressources, (flux ou autre, si tu utilises), et tu pourras alors la sauvegarder, l'écraser, supprimer ou autre.

  3. #3
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 9
    Par défaut
    Oui, mes images sont en format bitmaps. Je les charges à l'aide du constructeur de cette classe. Je les charge avec un simple string qui est mon chemin.

    Ce que tu m'as conseillé fonctionne.

    C'est étrange parce que, hier, j'ai créé un autre petit programme qui a sert uniquement a copier mes images vers un autre dossier. Je le lance une fois que mon autre programme a chargé en mémoire ses images. L'autre programme copie très bien les images, il na pas de problèmes avec les processus...

  4. #4
    Membre éclairé
    Étudiant
    Inscrit en
    Janvier 2004
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2004
    Messages : 279
    Par défaut
    Maintenant que tu as ciblé ton problème, résoud le de cette manière.

    Ne te focalise pas sur plusieurs applications à la fois, mais bien sur la seule et unique que tu as.

    Si tu as des problèmes avec, c'est que tu n'as pas codé proprement la partie de chargement/déchargement/sauvegarde, ou que tu as tout simplement oublié quelque chose.

    Penses au bouton "Résolu"

  5. #5
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 9
    Par défaut
    Une fois que je charge des images en mémoire, est-ce que je dois faire de quoi sur mon objet bitmap. Un espèce de flush ou close.

    C'est le programme que j'ai fait pour tester. J'essaye vraiment d'isoler le problème pour trouver ma solution. Ça ne fonctionne même pas non plus. J'ai exactement le même problème. Il m'est impossible d'effacer les images. Il doit y avoir quelque chose que j'ignore.

    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
     
            string[] tChemin;
            Bitmap[] tImages;
            public Form1()
            {
                InitializeComponent();
                tChemin = Directory.GetFiles("C:\\Images");
                tImages = new Bitmap[tChemin.Length];
                for (int i = 0; i < tChemin.Length - 1; i++)
                    tImages[i] = new Bitmap(tChemin[i]);
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                for(int i = 0; i< tChemin.Length - 1; i++)
                {
                    File.Delete(tChemin[i]);
                    tImages[i].Save(tChemin[i]);
                }
            }

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

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

    pour le code, ci dessus, c'est normal, tu maintiens un handle vers l'image (avec ton tableau de Bitmap), et tu essayes de supprimer le fichier sous-jacent, donc tu te fais jeter.

    Passe par des fichiers temporaires, que tu renommeras par la suite, ou alors ferme tout tes Bitmap (ca se dispose une Image, à tout hasard =) ), et renomme à partir d'une list de string triée.

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

Discussions similaires

  1. problème pour Killer un processus windows
    Par arnofly dans le forum VB.NET
    Réponses: 4
    Dernier message: 19/07/2007, 13h45
  2. Problème Palette bitmap
    Par tiboo dans le forum C++
    Réponses: 11
    Dernier message: 17/08/2006, 00h09
  3. [BitMap] Problème avec BitMap.LoadFromStream
    Par Philippe Gormand dans le forum Delphi
    Réponses: 3
    Dernier message: 22/07/2006, 18h53
  4. [NIO][Selector]Probléme d'écoute et processus 100%
    Par mangaspros dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 23/03/2006, 11h05
  5. [BCB6]Problème Dimensions Bitmap
    Par vsavoir dans le forum C++Builder
    Réponses: 10
    Dernier message: 09/11/2004, 13h35

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