FileSystemWatcher non funziona,cosa sbaglio?

di il
10 risposte

FileSystemWatcher non funziona,cosa sbaglio?

Ciao a tutti ,vorrei intercettare il momento in cui un file viene scaricato completamente e per fare questo pensavo di utilizzare il FileSystemWatcher ,nell'evento OnCreated però non entra mai :

private void button1_Click(object sender, EventArgs e)
        {
            DialogResult result = this.folderBrowserDialog1.ShowDialog();            
            if (result == DialogResult.OK)
            {
                selectedPath = folderBrowserDialog1.SelectedPath;
                this.textBox1.Text = selectedPath;
            }            
            watcher.Path = selectedPath;
            watcher.NotifyFilter = NotifyFilters.LastWrite;
            watcher.Filter = "*.*";
            watcher.Created += new FileSystemEventHandler(OnCreated);
            watcher.Changed += new FileSystemEventHandler(OnChanged);
            watcher.EnableRaisingEvents = true;
        }
        private void OnCreated(object source, FileSystemEventArgs e)
        {
            string msg = "msg0";
        }
        private void OnChanged(object source, FileSystemEventArgs e)
        {
           string msg = "msg1";
        }


avete qualche suggerimento? grazie,ciao

10 Risposte

  • Re: FileSystemWatcher non funziona,cosa sbaglio?

    Non ho capito cosa fai dopo aver assegnato le stringhe msg0 e msg1 ...
  • Re: FileSystemWatcher non funziona,cosa sbaglio?

    Niente , le ho aggiunte solo per mettere un breakpoint e vedere se il codice entra nel create ,per le prove che ho fatto mai mentre entra più volte nel changed
  • Re: FileSystemWatcher non funziona,cosa sbaglio?

    Devi controllare il parametro e ChangeType ed usare solo la OnChange anche per la Create
  • Re: FileSystemWatcher non funziona,cosa sbaglio?

    Grazie per aver risposto , ho cambiato il codice come segue ma continuo ad avere solo elemento Change
    
    private void button1_Click(object sender, EventArgs e)
            {
                DialogResult result = this.folderBrowserDialog1.ShowDialog();            
                if (result == DialogResult.OK)
                {
                    selectedPath = folderBrowserDialog1.SelectedPath;
                    this.textBox1.Text = selectedPath;
                }            
                watcher.Path = selectedPath;
                watcher.NotifyFilter = NotifyFilters.LastWrite;
                watcher.Filter = "*.*";
                watcher.Created += new FileSystemEventHandler(OnCreated);
                watcher.Changed += new FileSystemEventHandler(OnChanged);
                watcher.EnableRaisingEvents = true;
            }
            private void OnCreated(object source, FileSystemEventArgs e)
            {
                
    
                string msg = "msg0";
            }
            private void OnChanged(object source, FileSystemEventArgs e)
            {
                if (e.ChangeType == WatcherChangeTypes.Created)
                {
                    string s = "creato";
                } else if(e.ChangeType==WatcherChangeTypes.Changed)
                {
                    string s = "cambiato";
                } 
                string msg = "msg1";
            }
    
    non cade mai nel ChangeType == WatcherChangeTypes.Created , peraltro la documentazione sembra abbastanza chiara sul fatto che esista un evento created https://docs.microsoft.com/it-it/dotnet/api/system.io.filesystemwatcher.oncreated?view=net-5.0 , mi sà che mi stò perdendo qualcosa....,prove possibili da fare?
  • Re: FileSystemWatcher non funziona,cosa sbaglio?

    Ora funziona aggiungendo il NotifyFilters.FileName ,ciao
  • Re: FileSystemWatcher non funziona,cosa sbaglio?

    Però vorrei catturare "il momento" in cui un file viene scaricato completamente sul disco , qualche suggerimento?
  • Re: FileSystemWatcher non funziona,cosa sbaglio?

    Come lo scarichi? Da codice?
  • Re: FileSystemWatcher non funziona,cosa sbaglio?

    No , lo scarico avviando il download cliccando su un link, ad esempio scarico un iso di linux
  • Re: FileSystemWatcher non funziona,cosa sbaglio?

    Beh, non c'è nulla che ti possa avvisare.

    Un modo potrebbe essere tentare di aprire il file periodicamente (ogni mezzo secondo ad esempio) e controllare l'errore. Se non ne hai, allora il file è completo.
  • Re: FileSystemWatcher non funziona,cosa sbaglio?

    Mentre scarichi l'estenzione del file non è .part e viene rinominato in .iso al termine?
    se si, hai l'evento renamed:
     watcher.Renamed += new FileSystemEventHandler(OnRenamed);
    in OnRenamed controllerai che il file rinominato sia quello giusto.
Devi accedere o registrarti per scrivere nel forum
10 risposte