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!!