Ftp连接问题

时间:2009-01-30 10:01:52

标签: ftp download backgroundworker connect

我有一个使用BackgroundWorker实现的应用程序,它使用LumiSoft库定期连接到ftp(用于下载和上载)。它运行得很好,但过了一会儿(让我们说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 个答案:

答案 0 :(得分:2)

除非捕获到异常,否则您似乎没有处置FTP_Client对象?或者你遗漏了一些代码?

答案 1 :(得分:0)

它自己关闭了端口吗?如果没有,也许它超过了最大可用网络端口。

答案 2 :(得分:0)

@Mitch Wheat 我每次在try / catch之前处理FTP_Client。我只是遗漏了部分代码

答案 3 :(得分:0)

@jhornnes 我不认为那就是它。有时甚至连续运行2天(连接和断开连接)