Проблема с FTP соединением - PullRequest
0 голосов
/ 30 января 2009

У меня есть приложение, реализованное с BackgroundWorker, которое периодически подключается к ftp (для загрузки и выгрузки) с использованием библиотеки LumiSoft. Он работает просто отлично, но через некоторое время (скажем, через 2-3 часа) поток (backgroundworker) блокируется методом Connect (ведьма не выдает никаких исключений). Вот часть кода, которая терпит неудачу: пытаться {

            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;
        }

Это выполняется, скажем, каждые 2 минуты. Таким образом, он блокируется на «ftp.Connect (seData.host, 21);» и это происходит только через некоторое время. Есть идеи, почему это происходит? Пожалуйста, дайте мне знать, если у вас есть какие-либо предложения. Благодарю. Дана.

Ответы [ 4 ]

2 голосов
/ 30 января 2009

Похоже, вы не избавляетесь от объекта FTP_Client, если не обнаружено исключение? Или вы пропустили какой-то код?

0 голосов
/ 30 января 2009

@ jhornnes Я не думаю, что это то, что есть. Иногда он работает даже в течение 2 дней (подключение и отключение)

0 голосов
/ 30 января 2009

@ Митч Пшеничный Я использую FTP_Client каждый раз перед тем, как попробовать / поймать. Я просто пропустил эту часть кода

0 голосов
/ 30 января 2009

закрывает ли порт после себя? Если нет, возможно, он превышает максимально доступные сетевые порты.

...