2009-01-30 5 views
0

J'ai une application implémentée avec BackgroundWorker qui se connecte périodiquement à ftp (pour télécharger et télécharger) en utilisant la bibliothèque LumiSoft. Cela fonctionne très bien mais après un certain temps (disons 2 à 3 heures) le thread (backgroundworker) se bloque sous la méthode Connect (qui ne jette aucune exception). Voici la partie du code qui échoue: essayer {Problème de connexion Ftp

  ftp = new FTP_Client(); 
      logMessages = ""; 
      logMessages += Utils.FormatLogMessage("Ftp wants to connect " + 
       seData.host, Utils.MessageType.Info); 
      worker.ReportProgress(0); 

      ftp.Connect(seData.host, 21); 
      ftp.Authenticate(seData.userName, seData.password); 

      logMessages = ""; 
      logMessages += Utils.FormatLogMessage("Ftp connected to " + 
       seData.host, Utils.MessageType.Info); 
      error = false; 
      worker.ReportProgress(0); 
      System.Threading.Thread.Sleep(200); 
      logMessages = ""; 
     } 
     catch (Exception ex) 
     { 
      logMessages = ""; 
      if (ftp.IsConnected) 
      { 
       ftp.Disconnect(); 
      } 
      ftp.Dispose(); 
      logMessages += Utils.FormatLogMessage(ex.Message, Utils.MessageType.Error); 
      logMessages += Utils.FormatLogMessage("Trying to reconnect in " + 
       seData.recTime.ToString() + " seconds", Utils.MessageType.Info); 
      worker.ReportProgress(0); 
      Beep(500, 500); 
      System.Threading.Thread.Sleep(seData.recTime * 1000); 
      error = true; 
     } 

Ceci est exécuté à, disons toutes les 2 minutes. Donc, il bloque sur "ftp.Connect (seData.host, 21);" et cela n'arrive que peu de temps après. Une idée de pourquoi cela se passe? S'il vous plaît laissez-moi savoir si vous avez des suggestions. Merci. Dana.

Répondre

0

ferme-t-il le port après lui-même? Si ce n'est pas le cas, il dépasse peut-être le nombre maximal de ports réseau disponibles.

2

Vous ne semblez pas disposer de l'objet FTP_Client sauf si une exception est interceptée? Ou avez-vous oublié du code?

0

@Mitch Wheat Je dispose de FTP_Client à chaque fois avant ce try/catch. Je viens de laisser de côté cette partie du code

0

@jhornnes Je ne pense pas que ce soit ce que c'est. Parfois, il fonctionne même pendant 2 jours (connexion et déconnexion)