2009-01-30 10 views
0

LumiSoft 라이브러리를 사용하여 정기적으로 ftp (다운로드 및 업로드)에 연결하는 BackgroundWorker로 구현 된 응용 프로그램이 있습니다. 그것은 잘 작동하지만 잠시 후 (2 ~ 3 시간) 연결 메소드 (마녀는 예외를 던지지 않음) 아래의 스레드 (backgroundworker) 블록을 보자. 가 여기에 실패하는 코드의 일부입니다 이의는 2 분마다 가정 해 봅시다에서 실행되는 {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; 
     } 

을 시도합니다. 그래서 "ftp.Connect (seData.host, 21);"를 차단합니다. 그리고 그것은 잠시 후에 만 ​​발생합니다. 왜 이런 일이 일어나는 지 아십니까? 의견이 있으면 알려주십시오. 감사합니다. . Dana.

답변

0

그 자체로 포트를 닫습니까? 그렇지 않은 경우 아마도 최대 avaiable 네트워크 포트를 초과합니다.

2

예외가 잡히지 않는 한 FTP_Client 객체를 처리하지 않는 것처럼 보입니까? 아니면 코드를 생략 했습니까?

0

@Mitch Wheat try/catch 전에 매번 FTP_Client를 삭제합니다. 코드의 일부를 생략했습니다.

0

@jhornnes 나는 그것이 그게 아니라고 생각합니다. 때로는 2 일 (연결 및 분리)까지 실행됩니다.