0

这是我的一段代码:

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

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

4

1 回答 1

1

如果库不公开 Timeout 属性,您无能为力。FtpConnection 是 WinINET 上的一个非常薄的包装器,因此您唯一的选择是编写一些 P/Invoke 代码来更改 WinINET 的超时。

你使用这个类有什么原因吗?.NET 已经有FtpWebRequest/FtpWebResponse类。您可以使用FtpWebRequest.Timeout属性更改操作的超时,或通过传递Infinite值 (-1)禁用超时

于 2013-03-14T12:01:15.533 回答