下面是代码(由于明显的原因,必须删除LicenseOwner和LicenseKey ):
using System;
using System.Linq;
using EnterpriseDT.Net.Ftp;
namespace ftpClient
{
internal class Program
{
static void Main()
{
var con = new SecureFTPConnection
{
Protocol = FileTransferProtocol.FTP,
LicenseOwner = "***",
LicenseKey = "***",
ServerAddress = "ftp.swfwmd.state.fl.us",
ServerDirectory = "pub",
UserName = "anonymous",
Password = "a@b.c"
};
var ftpTask = con.BeginConnect(null, null) as FTPTask;
try
{
if (!ftpTask.AsyncWaitHandle.WaitOne(TimeSpan.FromMilliseconds(100), false))
{
// The connection has timed out. Abort the task just created.
var isConnected = con.IsConnected;
var isCompleted = ftpTask.IsCompleted;
ftpTask.Cancel();
Console.WriteLine("Attempted to cancel: con.IsConnected = {0}, ftpTask.IsCompleted = {1}", isConnected, isCompleted);
}
else
{
con.EndConnect(ftpTask);
}
}
catch (Exception exc)
{
Console.WriteLine(exc);
//ftpTask.AsyncWaitHandle.Close();
}
var files = con.GetFileInfos().Take(10);
foreach (FTPFile file in files)
{
Console.Out.WriteLine(file.Name);
}
con.Close();
Console.WriteLine("Press any key ...");
Console.ReadKey();
}
}
}运行它将输出以下内容:
Attempted to cancel: con.IsConnected = False, ftpTask.IsCompleted = False
CFCA
CFWI_PUB_COST_Docs
ECFT_Model_From_SFWMD
GWIS
Lake_Hancock_Field_Office_Project
PRINTSHOP
README.txt
RRWPI
RWSP
amr
Press any key ...对于我的生命,我不明白为什么?我以为它会失败,因为我应该把它取消了,不是吗?
怎么啦?
发布于 2014-07-24 01:07:09
连接不是一项常规任务,也不能以这种方式取消。使用Close(true)代替,因为这将有力地关闭套接字。此外,您应该能够使用超时值属性来达到同样的效果。这还允许您调用同步方法Connect,这将简化您的代码。
https://stackoverflow.com/questions/24915245
复制相似问题