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 :

application bug après mise en attente [Débutant]


Sujet :

VB.NET

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 46
    Par défaut application bug après mise en attente
    bonjour a tous

    j'ai une application qui doit tourner 24h/2' 7j/7
    je dois rechecherc dans un repertoire le nombre de fichier .pdf
    si la fonction retourne un null alors le programme se mets en "pause" et declenche un file systeme watcher qui regarde dans le repertoire si il y a un fichier qui se crée.
    le programme fonctionne "très" bien.

    le probleme que je rencontre, c'est lorsque je mets le programme en "pause" et qu'il n'y a aucun fichier qui se créer dans le repertoire pendant un certain nombre d'heure, alors le programme bug et ne reconnais plus si il y a oui ou non des fichiers qui se crée
    et si je ne mets pas de temps d'attente alors le programme boucle sur le nombre de fichier et celui ci me retourne une erreur comme quoi il y a une boucle infini

    merci d'avance pour vos reponse

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 46
    Par défaut
    je viens de voir qu'il n'etait pas très conseiller de mettre en pause le programme principale je vais donc le lancer depuis un autre thread je vais voir ci ça change quelque chose

    sinon si vous avez des idées je suis toujours preneur

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 46
    Par défaut
    je viens de tester le programme après 15h d'inactivité et il a l'air de fonctionner je refais un test pour plus de 24h d'inactivité
    si cela fonctionne toujours alors, je pense que le problème sera résolu
    et le fait de ne pas mettre en pause le programme serais la raison de mes problème voila je vous tiens au courant demain

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 46
    Par défaut
    bon mauvaise nouvelle mon programme a lacher après 24h
    je vois pas se que je peut faire vous pouvez me donnez des conseils
    merci

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 46
    Par défaut
    je suis bloqué depuis une semaine sans trouver de réponse
    J'ai essayé de réduire le temps d'attente "il me le considère comme boucle infini"
    je rajoute du temps et l'appli cesse de fonctionner car il n'a pas été utilisé

    je pense qu'il y a une solution a se problème mais la je suis perdu

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    le filesystemwatcher lève un évènement quand il trouve des fichiers, en attendant il suffit de ne rien faire, rien faire veut dire aussi pas de boucle infinie non plus
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 46
    Par défaut
    merci pour ta réponse pol
    enfaite lorsque je lance l'application il se peut qu'il y ai deja des fichiers dans le répertoire que le filesystemwatcher surveille, c'est fichier sont en attente de traitement et donc ne sont ni modifier ni supprimer ....
    c'est pour sa que j'utilise un sub qui me calcul le nombre de fichier qui est dans le répertoire puis tant qu'il y a des fichiers il les traite.... mais une fois que le nombres de fichier tombe a 0 alors j'ai m'a boucle infini c'est pour sa que j'ai mis le programme en pause et mets le filesystemwatcher en true, ... et tant qu'il n'y a pas de fichier qui se créer il ne se passe rien mais dès qu'il y en a un alors il relance l'appli et désactive le filesystemwatcher tant que le répertoire n'est pas vide.

    si je désactive le filesystemwatcher c'est parce que il est possible qu'il y est plusieurs fichier qui arrive dans le dossier simultanément, et du coup l'appli se lance a la chaine et sa créer des conflits

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    appli console ? winforms ? service ?

    la meilleure solution serait avec du multithreading, mais ca ne doit pas etre te ton niveau

    autre solution avec un timer (à 50ms par exemple)

    démarrage de l'appli:
    remplir une collection avec les fichiers existants
    démarrer le FileSystemWatcher
    démarrer le timer

    event du FileSystemWatcher :
    ajouter les nouveaux fichiers à la collection

    event du timer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while collection.count > 0
      traitement sur collection(0)
      collection.removeat(0)
    end while

    on ne peut pas faire de boucle infinie sur le thread principal
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 46
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    appli console ? winforms ? service ?
    c'est une appli winforms

    Citation Envoyé par Pol63 Voir le message
    autre solution avec un timer (à 50ms par exemple)

    démarrage de l'appli:
    remplir une collection avec les fichiers existants
    démarrer le FileSystemWatcher
    démarrer le timer

    event du FileSystemWatcher :
    ajouter les nouveaux fichiers à la collection

    event du timer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while collection.count > 0
      traitement sur collection(0)
      collection.removeat(0)
    end while
    je vais essayer cette solution

    la le timer sert bien a réexecuter le traitement des fichiers ?

    Citation Envoyé par Pol63 Voir le message
    on ne peut pas faire de boucle infinie sur le thread principal
    J'ai lancer la partie la plus lourde sur un autre thread pour justement pas faire de boucle infini sur le thread principale

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    que le temps d'exécution diffère ne pose pas de problème
    le timer lève un event toutes les x ms, et dans le principe que je te propose, on traite tous les fichiers sans interruption jusqu'à vider la collection
    une fois la collection vide, ca sort du sub, puis ca y revient donc x ms après pour voir si la collection a été remplies

    si tu ne veux pas perdre de temps tu peux descendre le timer à 16ms
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  11. #11
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 46
    Par défaut
    d'accord je vois mieux se que tu veut dire

    par contre la collection stock le fichier en lui meme ou juste sont adresse ?
    et est ce que le remove de la collection supprime les fichiers ou les supprime juste de la collection?

    je veux savoir ça parce qu'une fois les fichier traiter je l'ai deplace puis les supprimes du repertoire

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    pour la collection tu peux prendre un system.collections.generic.list(of string)
    il y a plusieurs collections qui ont chacune une utilité spécifique, le list(of ) permet de stocker x trucs typés

    (of string) permet de stocker des strings, donc tu peux y mettre les paths des fichiers
    dim lelist as new list(of string)
    lelist.add(un string)
    lelist.add(un autre string)
    lelist(0) contient le 1er string (éléments de 0 à count-1)
    lelist.removeat(0) retire le string à l'emplacement 0, et les autres descendent donc tous d'1, lelist(0) contiendra l'élement qui était à lelist(1)

    pour la lecture/déplacement ca n'est pas lié à la collection, c'est à toi de le gérer
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  13. #13
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 46
    Par défaut
    toute la partie ou j'utilise la collection fonctionne bien par contre le timer ne fonctionne pas
    est ce du au fait que je declare tout le traitement dans un thread different ?


    edit:
    J'ai laisser le traitement sur le thread de la form et sa fonctionne je vais le laisser tourner toute la journer pour voir si il ne fait pas comme avant

    merci de ton aide je te tiens au courant de la suite

    ps pour que ça fonctionne sur des thread different il faut que je fasse qu'elle manip ?

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    Citation Envoyé par silace Voir le message
    ne fonctionne pas
    avec ce niveau de détails on ne peut pas t'aider !
    ca ne fait rien ? ca plante ? un message d'erreur ? ...

    il faut aussi connaitre les points d’arrêt et le débogage en pas à pas

    les instances d'objets sont accessibles indépendamment du thread, seuls les controles de l'interface graphique ne peuvent pas être modifié depuis un thread autre que celui qui les a créé (sinon message d'erreur)
    il reste dans certains cas des problèmes d'accès concurrentiels à gérer
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  15. #15
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 46
    Par défaut
    le probleme avec le timer


    Citation Envoyé par Pol63 Voir le message
    les instances d'objets sont accessibles indépendamment du thread, seuls les controles de l'interface graphique ne peuvent pas être modifié depuis un thread autre que celui qui les a créé (sinon message d'erreur)
    il reste dans certains cas des problèmes d'accès concurrentiels à gérer
    il n'y a aucun message d'erreur mais je le controle a partir d'un thread différent que le winform et ne se lance pas ... ou si il est deja lancer ne declenche pas l'evenement sur l'autre thread

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    impossible de comprendre ce que tu essaies de dire ...

    le timer il n'y a rien à faire dessus à part le démarrer au démarrage de l'appli
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  17. #17
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 46
    Par défaut
    desoler je n'avais pas bien compris se que tu avais fait avec l'event du timer

    maintenant que j'ai vu qu'il faut mettre le traitement de la collection dans le timer je voit un peu mieux le role du timer

    mais juste un soucie le timer est programmer pour s'executer toute les 100ms donc tout les xms il se réexecute et du coup j'ai pas le temps d'executer la fonction dans le timer en entier
    et sa me fait redemarrer a chaque fois au debut

    ou alors lorque lorsque le timer execute la boucle while mettre le timer en false et le remettre en enable a sa sorti ?

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    oui
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    sub handles timer.tick
      timer.stop
      traitement
      timer.start
    end sub
    il me semblait que l'event ne pouvait pas se redéclencher tant que l'exécution n'était pas terminé ...
    tu as un system.windows.forms.timer ou un autre timer ? (il y en a 3 dans le framework)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  19. #19
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 46
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    il me semblait que l'event ne pouvait pas se redéclencher tant que l'exécution n'était pas terminé ...
    et bien si c'est pour sa que je ne comprenais pas (au debut)
    d’ailleurs c'est pas pratique

    Citation Envoyé par Pol63 Voir le message
    tu as un system.windows.forms.timer ou un autre timer ? (il y en a 3 dans le framework)
    j'ai le timer qui se trouve dans la boite a outils je pense que c'est le system.windows.forms.time et non le thread.timer ou time.timer

  20. #20
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 46
    Par défaut
    merci pour ton aide ça fonctionne comme se que je fesait avant mes en mieux
    je verrais demain si l'appli n'est pas figer

    Citation Envoyé par Pol63 Voir le message
    tu as un system.windows.forms.timer ou un autre timer ? (il y en a 3 dans le framework)
    tu peut me dire la difference entre ces trois timer ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/06/2015, 14h38
  2. Réponses: 2
    Dernier message: 04/08/2009, 12h00
  3. bug après mise à jour firefox
    Par bel57 dans le forum Firefox
    Réponses: 0
    Dernier message: 14/12/2008, 19h01
  4. Mise en attente de mon application
    Par xx_FiFty_xx dans le forum C#
    Réponses: 11
    Dernier message: 30/06/2008, 15h21
  5. [JTable] Action sur JButton après mise en attente
    Par 6ix dans le forum Composants
    Réponses: 2
    Dernier message: 28/02/2008, 07h27

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