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

C# Discussion :

Erreur File.create() Processus utilise déjà le fichier


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut Erreur File.create() Processus utilise déjà le fichier
    Bonjour,

    Pour un besoin particulier, j'utilise une boucle foreach qui me créé un fichier nommé "PASNUM.tif" dans des répertoires.

    A chaque occurence, le répertoire change donc le fichier ne peut pas être créé 2 fois dans le même répertoire.

    Pourtant au bout d'un certain temps j'ai une exception qui se déclenche avec comme message :
    le processus ne peut pas accéder au fichier car il est en cours d'utilisation par un autre processus.
    Quelqu'un a déjà eu ce problème ?

    Merci d'avance

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 194
    Par défaut
    quand qq'un d'autre utilise le fichier ou quand je code avec mes pieds

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 151
    Par défaut
    T'as du oublier un File.Close() quelque part, non ?

    Tu as lu les cours de programmation pour apprendre C# : http://dotnet.developpez.com/cours/?page=csharp ?

  4. #4
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut
    Citation Envoyé par BartRoX Voir le message
    T'as du oublier un File.Close() quelque part, non ?
    File.Close() n'existe pas en tant que tel en C# de mémoire.

    De plus, ma boucle fonctionne sur environ 200 itérations car elle me créé bien mes fichiers en tant normal.

    C'est que j'ai cette exception qui se lance au bout d'un certain temps.

    Pour info en plus, personne ne peut écrire sur le même répertoire ou utiliser ce fichier à ce moment la. Mon programme tourne sur un répertoire d'un serveur non partagé..

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 194
    Par défaut
    Citation Envoyé par Freud44 Voir le message
    File.Close() n'existe pas en tant que tel en C# de mémoire.

    De plus, ma boucle fonctionne sur environ 200 itérations car elle me créé bien mes fichiers en tant normal.

    C'est que j'ai cette exception qui se lance au bout d'un certain temps.

    Pour info en plus, personne ne peut écrire sur le même répertoire ou utiliser ce fichier à ce moment la. Mon programme tourne sur un répertoire d'un serveur non partagé..
    File.Create

    By default, full read/write access to new files is granted to all users. The file is opened with read/write access and must be closed before it can be opened by another application.
    Donc faut mettre un using.

    Et tu peux avoir un problème de lock si dans la listes des répertoires tu as 2x le même et vu que tu fais jamais de Close tu vas avoir un problème de resource mais normalement pas de fichier locker

  6. #6
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut
    Je viens de relancer le programme après y avoir ajouté un FileStream.close().

    Merci

  7. #7
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut
    Citation Envoyé par BenoitM Voir le message
    quand qq'un d'autre utilise le fichier ou quand je code avec mes pieds
    Merci ca aide !

  8. #8
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Citation Envoyé par Freud44 Voir le message
    Merci ca aide !
    Bonjour,

    ça n'aide pas en effet.
    Ce que veux dire BenoitM c'est que sans ton code, nous ne pouvons pas deviner où se situe l'erreur.

  9. #9
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 151
    Par défaut
    Peut être que tu dois ajouter une tempo dans ton code parce qu'il s'exécute trop vite sans avoir le temps de redonner la ressource ? La machine s'emballe

  10. #10
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut
    Effectivement, voici un exemple de code assez scolaire, qui représente ma boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    foreach(string strPath in tabPaths)
    {
        string strFilePath = strPath + "\\" + "PASNUM.tif";
        File.Create(strFilePath);
    }
    tabPaths est un tableau représentant une liste de répertoire, tous différents


    Citation Envoyé par BartRoX Voir le message
    Peut être que tu dois ajouter une tempo dans ton code parce qu'il s'exécute trop vite sans avoir le temps de redonner la ressource ? La machine s'emballe
    Ce qui est étonnant, c'est que ca fonctionne quand même pendant un certains temps.

    Le programme est un programme de récupération de données d'un système PLM vers un autre, donc rajouter une tempo...ca m'arrange pas vraiment au final

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

Discussions similaires

  1. Erreur dans des processus utilisant SDL
    Par koreissimouhamad dans le forum C
    Réponses: 0
    Dernier message: 26/03/2015, 22h05
  2. Réponses: 0
    Dernier message: 02/07/2010, 20h14
  3. Savoir quel processus utilise un fichier donné
    Par boisdin dans le forum Windows
    Réponses: 2
    Dernier message: 25/03/2010, 09h47
  4. Erreur lors de l'utilisation d'un fichier excel
    Par shadypierre dans le forum VBA Access
    Réponses: 1
    Dernier message: 11/03/2010, 14h16
  5. Liste de processus utilisant un fichier
    Par ZIED dans le forum Delphi
    Réponses: 1
    Dernier message: 25/07/2006, 18h20

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