首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用EnterpriseDT.Net.Ftp.SecureFTPConnection取消异步连接

无法使用EnterpriseDT.Net.Ftp.SecureFTPConnection取消异步连接
EN

Stack Overflow用户
提问于 2014-07-23 15:51:51
回答 1查看 67关注 0票数 0

下面是代码(由于明显的原因,必须删除LicenseOwnerLicenseKey ):

代码语言:javascript
复制
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();
        }
    }
}

运行它将输出以下内容:

代码语言:javascript
复制
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 ...

对于我的生命,我不明白为什么?我以为它会失败,因为我应该把它取消了,不是吗?

怎么啦?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-24 01:07:09

连接不是一项常规任务,也不能以这种方式取消。使用Close(true)代替,因为这将有力地关闭套接字。此外,您应该能够使用超时值属性来达到同样的效果。这还允许您调用同步方法Connect,这将简化您的代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24915245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档