keine Events für den Fliesystemwatcher verfügbar

  • WPF

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    keine Events für den Fliesystemwatcher verfügbar

    Hallo zusammen,

    ich arbeite mich gerade mühsam in WPF ein. (VisualStudio 2017 Visual Basic als WPF) Bei meiner Suche fand ich dann einen Beitrag, wie man den Filesystemwatcher einbindet. Merkwürdigerweise stellt er mir aber keine Events zur Verfügung. Folgendes habe ich gefunden:


    VB.NET-Quellcode

    1. Imports System.IO 'nötig, um den FileSystemWatcher zu nutzen
    2. Class MainWindow
    3. Private Sub MainWindow_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
    4. Dim Überwachung As New IO.FileSystemWatcher
    5. Überwachung.EnableRaisingEvents = True
    6. Überwachung.IncludeSubdirectories = False
    7. Überwachung.Path = "C:\temp\XML"
    8. Überwachung. 'kein Event verfügbar
    9. End Sub


    Tippe ich nun Überwachung. so erscheint in der Liste kein Event. In dem Beispiel das ich gesehen habe tauchen hier aber die Events, wie z.B. "changed" auf. Was mach ich denn da falsch?

    Gruß

    eddi
    Hallo @eichseinet

    Das hat jetzt zwar nicht direkt mit WPF zu tun aber ok.

    Wenn du einen Eventhandler setzten möchtest musst du diesen mit AddHandler tun.
    Tippst du AddHandler Überwachung. wird dir das Event auch in der Intellisense angezeigt. Anschliessend musst du einen Delegaten übergeben.

    Achja, du solltest Variablennamen mit umlauten unterlassen.

    Beispiel:

    VB.NET-Quellcode

    1. Dim Ueberwachung As New IO.FileSystemWatcher("C:\temp\XML")
    2. Ueberwachung.EnableRaisingEvents = True
    3. Ueberwachung.IncludeSubdirectories = False
    4. AddHandler Ueberwachung.Changed, AddressOf Ueberwachung_Changed
    5. AddHandler Ueberwachung.Created, AddressOf Ueberwachung_Changed
    6. AddHandler Ueberwachung.Renamed, AddressOf Ueberwachung_Changed
    7. AddHandler Ueberwachung.Deleted, AddressOf Ueberwachung_Changed
    8. End Sub
    9. Private Sub Ueberwachung_Changed(sender As Object, e As FileSystemEventArgs)
    10. Select Case e.ChangeType
    11. Case WatcherChangeTypes.Changed
    12. Console.WriteLine($"File changed. FilePath: '{e.FullPath}'")
    13. Case WatcherChangeTypes.Created
    14. Console.WriteLine($"File created. FilePath: '{e.FullPath}'")
    15. Case WatcherChangeTypes.Deleted
    16. Console.WriteLine($"File deleted. FilePath: '{e.FullPath}'")
    17. Case WatcherChangeTypes.Renamed
    18. Console.WriteLine($"File renamed. FilePath: '{e.FullPath}'")
    19. Case Else
    20. Throw New Exception("Unknown ChangeType!!!")
    21. End Select
    22. End Sub


    Edit: Hatte ein paar Handler vergessen

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Nofear23m“ ()

    Nofear23m schrieb:

    Variablennamen mit umlauten unterlassen.

    Ich rate sogar dazu, konsequent englisch zu coden, dann ist der code einheitlich (der Syntax verwendet ja auch englisch) und international lesbar.
    Das ist richtig @FormFollowsFunction, allerdings haben Anfänger genug damit zu kämpfen das zu verstehen das sie hier genau überhaupt machen, wenn das englisch dann auch nicht so gut ist sind es gleich zwei Dinge die einem "Englisch ;-))" vorkommen.

    Klar, ich mache immer alles in Englisch, aber ich finde es OK wenn jemand aussagekräftige(!!) deutsche Variablennamen hat solange diese keine Sonderzeichen und/oder Umlaute enthalten.

    Schöne Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Nofear23m schrieb:

    keine Sonderzeichen und/oder Umlaute
    was ist daran schlecht?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    mrMo schrieb:

    was ist daran schlecht?

    Das man es einfach nicht macht. Fällt meiner Meinung nach unter schlechten Stil.
    • Gewöhnt man es sich mal an macht man es immer. Schreibt man dann mal ein JavaScript und jemand mit Englischem System führt dieses aus kanns krachen.
    • Bearbeitet/Erweitert ein anderer Programmierer den Code mit einer nicht-deutschen Tastatur kann er den Variablennamen nicht mal schreiben
    • Wiederspricht der NamingGuidline
    Den folgenden Thread finde ich persönlich z.b. super, sehr interessant und viel zu lernen: vb-paradise.de/programmieren/h…und-schlechten-code-stil/

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Um den Syntax zu verstehen, sollte man auch die englischen Begriffe verstehen, also warum nicht gleich konsequent sein !?
    Man muß ja nicht gleich englisch sprechen können/lernen, sondern nur die entsprechenden Vokabeln verstehen.

    Ich halte grundsätzlich nichts davon, aus einfachheitsgründen, es erst "falsch" zu erlernen, um es dann irgentwann mal anders ("richtig") zu machen.

    eichseinet schrieb:

    aber die Software akzeptierte es nicht.
    Die Deklaration vom FileSystemWatcher muss aus der Prozedur in die Klasse verschoben werden.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!
    Danke für die Hilfe. Jetzt klappt alles.
    Das mit den Umlauten seh ich ein und habs auch geaendert. :)
    Mein Englisch ist gut genug, um die Begriffe in der Software zu verstehen. Die Variabeln halt ich trotzdem lieber in deutsch. Da es sich um Programme für den Eigenbedarf handelt, wird sich wohl keiner beschweren.
    Die Deklaration hab ich dann auch noch aus der Prozedur heraus genommen.

    Gruß und vielen Dank

    eddi

    mrMo schrieb:

    Nofear23m schrieb:

    keine Sonderzeichen und/oder Umlaute
    was ist daran schlecht?
    Es gibt auch inhaltliche Gründe, Sonderzeichen zu unterlassen:
    Man bearbeitet Code oft mit mehr Tools als einem bewusst wird, und viele Tools - evtl. einfach nur schlecht gecodet - kommen mit Sonderzeichen nicht klar.
    Einfaches Beispiel: Schon eine einfache Datei-Kopier-Funktion kann - wenn fehlerhaft gecodet - das Encoding verdrehen mit dem Ergebnis menschen-unleserlicher Sonderzeichen. Mensch "repariert" die kaputten Zeichen womöglich noch, und damit ist der Code dann ganz verdorben.
    Vom Dataset-Designer ists mir auch in unguter Erinnerung - der verhaspelt sich - ganz selten! - auch damit, wenn er Code generieren sollte mit Sonderzeichen.
    Auch gibts Internet-Sites, die die Sonderzeichen versauen, wenn du da Code postest.
    etc...