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

VB.NET Discussion :

Attendre une fin de processus avant suppression du fichier


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2014
    Messages : 55
    Points : 41
    Points
    41
    Par défaut Attendre une fin de processus avant suppression du fichier
    Bonjour à tous, en ce moment je fais un petit gestionnaire des taches, mais je souhaite avoir une nouvelle fonctionnalité qui au lieu de seulement arreter un processus, supprime le fichier en question une fois que le processus a été arreter.
    Seulement voila si je ne mets pas de entre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     Dim TargetProcess As Process = Process.GetProcessById(TargetProcessID)
            Try
                TargetProcess.Kill()
            Catch
            End Try
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     Try
                IO.File.Delete(TargetFilePath)
            Catch ex As exception
                MsgBox(ex.Message)
            End Try
    Sa me dit que l’accès au fichier est refusé, alors que ce nest pas une question de droit car cela arrive meme si le fichier se trouve dans un dossier temporaire, c'est juste une question de temps entre les deux actions.
    Mais je ne trouve pas que soit une "réelle" solution à proprement parlé.
    J'ai donc essaye de remplacer l'attente par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      'Dim TargetProcess As Process = Process.GetProcessById(TargetProcessID)
            'While TargetProcess.HasExited = False : do nothing : End While
    Pourriez-vous m'expliquez ?
    Merci et bonne soirée

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    en effet après l'arrêt du programme, le fichier est libéré avec un délai variable
    il convient donc de tester jusqu'à que ca soit possible

    le plus propre c'est un thread qui while true avec un thread.sleep(5) qui if .open(exclusif) then delete:exit while

    le thread.sleep sert à ne pas prendre 100% des ressources processeur
    le file.open avec la surcharge qui demande un accès exclusif permet de savoir quand le fichier est libéré, si on passe par un delete dans un try catch ca marche aussi, mais c'est toujours dommage de déclenché une exception quand on peut s'en passer

    si la version moche mais simple à coder sans thread c'est un application.doevents en plus du thread.sleep, et donc un delete dans un try catch, si on passe dans le catch on continue while, sinon on exit while


    edit: le file.open throw aussi en cas de soucis, donc on pourrait delete directement dans un try catch, ou alors chercher une méthode qui dit juste si on pourrait avoir l'accès exclusif ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2014
    Messages : 55
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    ... ou alors chercher une méthode qui dit juste si on pourrait avoir l'accès exclusif ...
    C'est plutôt à cela que je pensais, je vais voir si je trouve une piste.
    Merci Pol

Discussions similaires

  1. Réponses: 8
    Dernier message: 15/05/2008, 17h41
  2. Réponses: 3
    Dernier message: 21/12/2007, 14h10
  3. Réponses: 2
    Dernier message: 17/07/2007, 13h57
  4. [JBoss] Attendre la fin du démarrage avant d'accepter des connexions
    Par Frédéric Bouchery dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 14/06/2007, 15h29
  5. attendre la fin de chargement d'une page avant de continuer le script
    Par jibouze dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 07/06/2006, 09h50

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