Announcement

Collapse
No announcement yet.

File-Zugriff in Verbindung mit dem FileSystemWatcher

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • File-Zugriff in Verbindung mit dem FileSystemWatcher

    Hallo zusammen,

    nach langer Suche möchte ich euch mal um Hilfe bitten.

    ich möchte ein Verzeichnis mithilfe des FileSystemWatcher auf das Erstellen von Dateien überprüfen. Wenn eine Datei in das angegebene Verzeichnis geschrieben wird, möchte ich sie per Mail an bestimmte Empfänger versenden. Das Ganze funktioniert auch bei kleinen Dateien. Wenn ich jetzt aber eine große Datei in das Verzeichnis hineinkopiere wird zu Beginn des Kopiervorgangs das Event gestartet. Die Datei kann aber noch nicht weiter verarbeitet werden, da sie noch in das Verzeichnis geschrieben wird.

    Kann mir jemand sagen, wie ich dieses Problem lösen kann? Ich bin für jede Hilfe dankbar!!!

    Hier mein Code:
    Code:
    Sub test()
         Dim watcher As New FileSystemWatcher()
         watcher.Path = "c:\testpfad"
         watcher.Filter = "*.zip"
         AddHandler watcher.Created, AddressOf OnCreated   
         watcher.EnableRaisingEvents = True
    End Sub
    
    Private Shared Sub OnChanged(ByVal source As Object, ByVal e As FileSystemEventArgs)
    
            Dim message As Message = New Message
            message.From = New Mailbox("<<Absender-Adresse>>", "My Name")
            message.To.Add("("<<Empfänger-Adresse>>", "John Smith")
            message.Subject = "Test"
            message.Body = "This is a message with an attachment."
            message.ContentType = New ContentType("text", "plain", "utf-8")
            message.ContentTransferEncoding = ContentTransferEncoding.QuotedPrintable
    
    ‘ Zeile, bei der bei großen Dateien der Fehler geworfen wird…
            message.Attachments.Add(e.FullPath)
    
            Dim client As SmtpClient = New SmtpClient("<<server>>")
    
             client.Connect()
             client.Send(message)
             client.Disconnect()
    End Sub

  • #2
    Starte einen Timer der nach x-Sekunden die Datei prüft ob Zugriff möglich ist.
    Falls nein, Timer nochmal starten.

    Comment


    • #3
      Hallo,

      danke für die schnelle Antwort! Wie überprüfe ich denn am Besten, ob der Zugriff möglich ist? Mit einem Try-Catch-Block würe zwar gehen aber wäre bestimmt nicht die eleganteste Methode oder?

      Comment


      • #4
        Mir fällte keine sonstige einfache Möglichkeit ein als mit einem einfach versuch des öffnens.

        Comment


        • #5
          Hallo [email protected],

          schau mal hier, da steht ALLES was man über den FileSystemWatcher wissen muss:
          Ashutosh Nilkan's Webblog - FileSystemWatcher

          Ich hatte auch mit dem gleichen Problem zu kämpfen, konnte es aber mit dieser Info einfach lösen.

          Grüße
          _ntr_

          Comment


          • #6
            Hallo -_ntr_,

            vielen Dank für deine Hilfe!! Hast du evtl. ein kleines Codebeispiel parat?

            Viele Grüße
            Torsten

            Comment


            • #7
              Hallo [email protected],

              ich kann (darf) Dir leider hier nicht helfen, da der Code für meinen Arbeitgeber erstellt wurde, und ich Schwierigkeiten diesbezüglich vermeiden möchte.

              Ich kann Dir aber anbieten, dass Du Dich einfach mal versuchst, und ich helfe Dir konkret an Deinen Problemen, sofern Du sie mir hier schilderst.

              (Außerdem wäre der Code in C# gewesen ;-)

              Grüße
              _ntr_

              Edit: Grammatik

              Comment


              • #8
                Hallo,

                Wenn die Datei ins Verzeichnis reinkopiert wird, starte den Wachter auf Dateinamenänderung, überwache zuerst ob die Datei an Größe sich verändert. Wenn die Datei nicht mehr größer wird, ist sie ganz übertragen. Dann bennene die Datei um. Ab hier wird der Watcher ausgelöst und du kannst deine Sachen Ausführen die du willst.
                Du brauchst einen festen Startpunkt und denn hast du dann mit der Dateinamenänderung.

                Gruß
                Meissner

                Comment

                Working...
                X