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 :

[VB.NET]FilesystemWatcher


Sujet :

Windows Forms

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [VB.NET]FilesystemWatcher
    Salut,

    Je m'arrache les cheveux sur cette classe car pour moi, il y a un bug...
    la méthode changed su FSW est lancée plusieurs fois consécutivement.

    Comment faire pour corriger cela ?
    Voici mon problème : lorsque le fichier est terminé, je voudrais exécuter une action (impression LPR) (j'ouvre le fichier en mode exclusif, si il y a erreur, c'est qu'il est en cours de transfert, autrement, c'est bon); or, une fois effectivement terminée, l'action (process.start) se lance 2 fois, ce qui tend à montrer que la méthode change du FSW est lancé une fois de trop !

    Quelqu'un a-t-il trouvé une astuce à ce "bug" ?

    Merci d'avance du coup de main


  2. #2
    Membre habitué Avatar de del-dongo
    Inscrit en
    Mai 2003
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 147
    Points : 183
    Points
    183
    Par défaut
    montre nous un peu de code.

    sur quelle action sur les fichiers lance tu ton "Process.Start"...c'est peut etre normal que 2 events soit lancé dans le cas d'un couper coller qui peut etre décomposé en plusieurs étapes...

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut FileSystemWatcher
    Désolé pour le manque de code !
    Le voici pour la méthode OnChanged et OnRenamed, si ça peut servir à d'autres aussi basique que ça puisse être.

    Sub OnChanged(ByVal source As Object, ByVal e As FileSystemEventArgs)
    'Dim sfilename As FileAttributes = File.GetAttributes(e.FullPath)
    System.Threading.Thread.Sleep(3000)
    Try
    PictureBox1.Visible = True
    PictureBox2.Visible = True
    FileOpen(1, e.FullPath, OpenMode.Input)
    FileClose(1)
    sMessage("Fichier " & e.FullPath & " transféré !")

    File.Move(e.FullPath, e.FullPath & "ok")
    Exit Sub

    Catch ex As Exception
    sMessage(e.FullPath & " en cours de transfert...")
    End Try



    End Sub

    Sub OnRenamed(ByVal source As Object, ByVal e As RenamedEventArgs)
    Dim i As Integer
    Dim DirInfo As New FileInfo(e.FullPath)
    Dim Proc As New Diagnostics.Process
    sMessage("File " & e.OldFullPath & " renommé en " & e.FullPath)

    i = 0

    For i = 0 To dtConfig.Rows.Count - 1
    If dtConfig.Item(0, i).Value <> "" Then
    If DirInfo.DirectoryName = dtConfig.Item(0, i).Value Then
    Proc.StartInfo.UseShellExecute = False
    Proc.StartInfo.CreateNoWindow = True
    'On définit la commande
    Proc.StartInfo.FileName = "lpr.exe"
    Proc.StartInfo.Arguments = "-S" & dtConfig.Item(1, i).Value & " -P" & dtConfig.Item(2, i).Value & " " & _
    Chr(&H22&) & e.FullPath & Chr(&H22&)
    'Démarrage de la commande
    NotifyIcon1.BalloonTipText = "Début LPR..."
    NotifyIcon1.BalloonTipIcon = ToolTipIcon.Info
    NotifyIcon1.ShowBalloonTip(2000)

    Proc.Start()

    'Lecture de la sortie de la commande
    'Attente de la fin de la commande
    Proc.WaitForExit()
    'Libération des ressources
    Proc.Close()
    NotifyIcon1.BalloonTipText = "Fin LPR..."
    NotifyIcon1.BalloonTipIcon = ToolTipIcon.Info

    File.Delete(e.FullPath)
    PictureBox1.Visible = False
    PictureBox2.Visible = False
    Exit For

    End If
    End If

    Next


    End Sub

    En faisant comme ça, en clair, en renommant le fichier une fois qu'il est complètement arrivé, mon process "lpr" (impression du fichier) focntionne sans doublon.
    Maintenant, étant berru en .net (je viens de vb6 et du C), je suis ouvert à toute critique ou amélioration.

    Merci tout de même du coup de main...

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Merci de prendre en compte mes remarques et de les appliquer:

    il faut changer le titre de votre premier message, et utiliser les balises code



Discussions similaires

  1. Réponses: 10
    Dernier message: 28/07/2009, 15h05
  2. Réponses: 1
    Dernier message: 05/10/2008, 14h31
  3. Réponses: 4
    Dernier message: 27/05/2008, 09h35
  4. [VB.NET 2.0] FileSystemWatcher et Exclusion
    Par exclusif dans le forum Windows Forms
    Réponses: 5
    Dernier message: 27/09/2006, 01h08
  5. Réponses: 8
    Dernier message: 23/08/2006, 15h58

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