Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    37

    [VB .NET] Monitorare cartelle con filesystemwatcher

    Salve a tutti!!

    Sto sviluppando un programma in vb .net e l'ho praticamente concluso, se non fosse che il monitorare le cartelle mi da qualche problema, a volte non avviene come dovrebbe o da errore.

    Riassumo brevemente la situazione, non posto molto codice perché innanzitutto vorrei capire nella teoria dove sbaglio, poi applicarlo, e anche perché dovrei postare molti pezzi lunghi e farei confusione.

    Ho un form1 che chiede da input SOLO al primo avvio le estensioni da controllare, un form2 che sempre al primo avvio chiede le cartelle da monitorare.

    Al form1_load se è il primo avvio faccio inserire le estensioni e le salvo in variabili e in file di testo (per i prossimi avvii) poi avvio il form2_load che chiede le cartelle da monitorare e allo stesso modo le salvo in variabile e file di testo.

    Il tutto torna al form1 (il form2 è figlio e proprietario dell'1)
    Ora che ho tutto ciò che mi serve il problema è riuscire a creare il filesystemwatcher per tutte le cartelle (quindi in runtime) e tenerle tutte attive.
    Non so dove dichiarare il watcher per non farlo andare out of scope, perché poi non controlla nulla.
    Al momento ho nel form1_load un ciclo che itera nell'array cartelle e per ogniuna richiama una mia funzione, nella quale ho:
    codice:
    Dim folderwatcher As New IO.FileSystemWatcher() 
    folderwatcher.Path = path
     folderwatcher.Filter = "*.*" 
    folderwatcher.IncludeSubdirectories = True 
    folderwatcher.NotifyFilter = (IO.NotifyFilters.FileName Or IO.NotifyFilters.LastAccess Or IO.NotifyFilters.LastWrite) 
    AddHandler folderwatcher.Created, New IO.FileSystemEventHandler(AddressOf filtering) folderwatcher.EnableRaisingEvents = True
     Console.ReadLine()
    (la filtering che qui nomino semplicemente filtra tutti i file con i file nell'array estensioni e ignora gli altri)

    Però non credo sia ottimizzato, per di più non funziona e in alcuni momenti mi chiude il programma, senza errori particolari.

    Qualcuno può darmi qualche dritta? Non so che pesci pigliare!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    37
    Rieccomi, nessuno ancora mi ha risposto.
    Volevo però chiedere un ulteriore consiglio, ho deciso di rendere più modulare il mio programma e riorganizzarlo.
    L'idea è, ho 2 form che raccolgono dei dati in 2 variabili globali, e voglio creare un nuovo modulo che contenga la chiamata agli handler.

    lo chiamo il modulo filewatcher poniamo dal formAvvio, lo faccio eseguire parallelamente giusto? non figlio se no il resto del codice è fermo?

    Poi cosa metto nel modulo? contando che le 2 variabili globali contengono una l'estensioni da controllare, l'altra le cartelle.
    Quindi in runtime devo creare tot filesystem watcher con determinate cartelle e file, e devono rimanere attivi e girare in background. Usando un modulo separato posso?
    codice:
    'pseudo codice
    form_estensioni
    inserisci estensioni da controllare
    est() 'globale
    
    form_cartelle
    inserisci cartelle da controllare
    folder() 'globale
    
    form_avvio
    'chiamata al modulo filesystemwatcher
    modulo1()
    
    
    modulo1
    'dovrebbe per ogni valore in folder avviare un handler di un evento che resta attivo sempre
    per ogni folder in folder()
     watcher  new filesystemewatcher 
    
    watcher.path=folder
    
    enableraiseevent=true

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.