Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 14 su 14
  1. #11
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,485
    Originariamente inviato da fermat
    devo capire se il problema era il ciclo while o il fatto che avevo scritto male la classe DirMonitor.
    Non l'avevo notata. Senz'altro è scritta male, perché fai un ciclo infinito in cui all'interno crei ad ogni iterazione una nuova istanza del FileSystemWatcher che si aggiunge alla precedente, e tutte quante andranno a invocare gli eventi che hai scritto, generando una pletora di segnalazioni (peraltro tutte uguali).
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  2. #12
    sto riprovando a mettere il main separato dal resto, ma c'è qualcosa che mi sfugge.
    ho ricreato la classe DirMonitor:
    codice:
    namespace DirectoryMonitor
    {
        class DirMonitor
        {
            private string path;
    
            public DirMonitor(string path)
            {
                this.path = path;
            }
    
            public void Watcher()
            {  
                FileSystemWatcher fw = new FileSystemWatcher();
                fw.Path = path;
                fw.IncludeSubdirectories = true;
                fw.NotifyFilter =
                    NotifyFilters.LastAccess |
                    NotifyFilters.LastWrite |
                    NotifyFilters.FileName |
                    NotifyFilters.DirectoryName;
                fw.Changed += new FileSystemEventHandler(OnChanged);
                fw.Created += new FileSystemEventHandler(OnChanged);
                fw.Deleted += new FileSystemEventHandler(OnChanged);
                fw.Renamed += new RenamedEventHandler(OnRenamed);
                fw.EnableRaisingEvents = true;
    
                Console.WriteLine("Digita q per uscire.");
                while (Console.Read() != 'q') ;
            }
    
            private void OnChanged(object source, FileSystemEventArgs e)
            {
                DateTime dt = new DateTime();
                dt = DateTime.UtcNow;
                Console.WriteLine("Path: " + e.FullPath + " " + e.ChangeType + " at " + dt.ToLocalTime());
            }
    
            private void OnRenamed(object source, RenamedEventArgs e)
            {
                DateTime dt = new DateTime();
                dt = DateTime.UtcNow;
                Console.WriteLine("Old path:" + e.OldFullPath + " Path: " + e.FullPath + " " + e.ChangeType + " at " + dt.ToLocalTime());
            }
        }
    }
    nel main immetto il percorso e istanzio la classe:
    codice:
    namespace DirectoryMonitor
    {
        class Program
        {
            static void Main()
            {
                Console.WriteLine("Immetti il percorso di una directory:");
                string path = Console.ReadLine();
                DirMonitor dm = new DirMonitor(path);
                dm.Watcher();
            }
        }
    }
    però nn mi esce il messaggio:
    Console.WriteLine("Digita q per uscire.");
    in fondo al metodo watcher.
    nn riesco a capire.

  3. #13
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,485
    Originariamente inviato da fermat
    nn mi esce il messaggio:
    Console.WriteLine("Digita q per uscire.");
    in fondo al metodo watcher.
    nn riesco a capire.
    Fai il debug del tuo programma e metti un breakpoint nel metodo Watcher, da eseguire passo per passo, così da comprendere qual è il punto in cui si blocca.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #14
    pare che funzioni adesso.
    forse in ufficio il percorso (che era di rete) gli dava fastidio.
    domani riprovo ma con le cartelle locali funziona bene.
    grazie!!

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 © 2026 vBulletin Solutions, Inc. All rights reserved.