2009-05-25 7 views
1

Quelqu'un peut-il me dire pourquoi cela traite tous les fichiers, puis le fait à nouveau? Ça me rend fou. MerciPour boucle s'exécute deux fois

private void HP3BackgroundWorker_DoWork(object sender, DoWorkEventArgs e) 
    { 
     BackgroundWorker hp3worker = (BackgroundWorker) sender; 

     DirectoryInfo hp3Files = new DirectoryInfo(fromPath + @"\hp3\"); 
     FileInfo[] hp3Filelist = hp3Files.GetFiles("*.*"); 
     int count = hp3Filelist.Length; 

     UseWaitCursor = true; 
     for (int i = 0; i < count; i++) 
     { 
      FileInfo file = hp3Filelist[i]; 
      try 
      { 
       File.Copy(fromPath + @"\hp3\" + file.Name, toPath + @"\hp3\" + file.Name, true); 
       hp3worker.ReportProgress((int)((float) i/count * 100)); 
      } 
      catch (Exception error) 
      { 
       MessageBox.Show("Error is " + error); 
      } 
     } 
     UseWaitCursor = false; 
    } 
+4

Plus d'informations nécessaires. Il n'y a aucune raison évidente pour que cela s'exécute deux fois - Est-ce que la fonction DoWork est appelée deux fois? –

+0

Si ce code est appelé à partir de l'événement d'un FileSystemWatcher, il est probablement appelé deux fois. – idstam

+0

Probablement? Pourquoi ne vérifiez-vous pas cela en premier? Comment devrions-nous vous aider si nous ne savons pas si la méthode est appelée deux fois? –

Répondre

8

Vérifiez si vous avez joint le gestionnaire d'événements HP3BackgroundWorker_DoWork deux fois? Etes-vous sûr que la fonction n'est pas appelée deux fois?

+0

Il a été appelé pour deux fois. Je l'ai traversé tellement de fois. Je ne sais pas manqué ça! Je vous remercie! – JimDel

2

Cette boucle semble bien.