代码之家  ›  专栏  ›  技术社区  ›  petko_stankoski

修复新连接的超时问题

  •  0
  • petko_stankoski  · 技术社区  · 12 年前

    这是我的一段代码:

    string my_dir = "";
    try
    {
        my_dir = ftp.GetCurrentDirectory() + "/test";
        //It sometimes crashes here. I get timeout error.
    }
    catch
    {
        ftp.Close();
        ftp.Open();
        my_dir = ftp.GetCurrentDirectory() + "/test";
    }
    

    ftp是FtpConnection类的实例: http://ftplib.codeplex.com/discussions?searchText=&size=10&page=1

    此错误发生在非常大的文件上。我得等两个小时才能再次拿到。这就是我在这里问的原因。catch块中的代码有意义吗?它会解决超时问题吗?

    1 回复  |  直到 12 年前
        1
  •  1
  •   Panagiotis Kanavos    12 年前

    如果库不公开Timeout属性,那么就没有什么可做的了。FtpConnection是WinINET上的一个非常薄的包装器,因此您唯一的选择是可以编写一些P/Invoke代码来更改WinINET的超时。

    你使用这个类有什么原因吗。NET已经具有 FtpWebRequest/FtpWebResponse 类。您可以使用 FtpWebRequest.Timeout 属性,或通过传递 Infinite 值(-1)