C# C FtpWebRequest异步下载

C# C FtpWebRequest异步下载,c#,asynchronous,download,ftpwebrequest,C#,Asynchronous,Download,Ftpwebrequest,Im看到了许多关于如何异步上传的示例,但没有太多关于如何从FTP服务器异步下载的信息 有人能提供一个c语言的小示例,它使用FtpWebRequest从FPT服务器异步下载文件吗 我有要从ftp服务器下载的文件的完整路径,我需要使用1个连接开始异步下载到本地计算机,因此我不需要逐个文件并打开/关闭每个文件的连接。线程不是一个选项,因为出于性能原因,我只想连接到ftp服务器,并且我的所有下载都使用现有连接??下载 我阅读了MSDN文档,但不确定如何正确使用ConnectionGroupName或内置

Im看到了许多关于如何异步上传的示例,但没有太多关于如何从FTP服务器异步下载的信息

有人能提供一个c语言的小示例,它使用FtpWebRequest从FPT服务器异步下载文件吗

我有要从ftp服务器下载的文件的完整路径,我需要使用1个连接开始异步下载到本地计算机,因此我不需要逐个文件并打开/关闭每个文件的连接。线程不是一个选项,因为出于性能原因,我只想连接到ftp服务器,并且我的所有下载都使用现有连接??下载

我阅读了MSDN文档,但不确定如何正确使用ConnectionGroupName或内置FtpWebRequest连接池等属性,这些属性假定与异步操作一起工作以提高性能


谢谢

最简单的方法是使用链接中提到的代码,并在单独的线程中使用。您不必担心在C中创建异步处理程序。实际上,您可以简单地将链接上的代码放入一个方法中,并使用以下方法:

YourClass c = new YourClass();
Thread thread = new Thread(c.method_to_download);
thread.Start();

// continue with WinForms application.

/* You can also do the following */

YourClass c = new YourClass();
c.Execute();

// where YourClass is defined as :

public class YourClass() {

    public YourClass() {}

    public void Execute() {
        // code to execute the download in a try-catch block.
    }
}
YourClass是一个自定义类,您可以使用它来执行下载。当从finally块完成下载时,它可以选择使用参数引发简单事件。您的调用代码可以通过事件处理程序接受此事件,并找到下载的结果


这只是处理此问题的两种方法,还有其他方法,例如使用后台线程或使用FtpWebRequest类的异步回调,但它们都可以获得相同的结果。

感谢您的回复。但是,我需要下载文件,而不是上传。我还有一个问题。。如果我使用线程同步启动下载,它不会挂起我的屏幕???这个FTP应该完全在后台管理,允许我的用户继续使用WinForm应用程序。非常感谢您的更新。我在一本书中读到,线程对于相对较小的时间执行操作非常有用。对于FTP等耗时较长的操作,他们建议使用任务而不是线程。这是真的吗?如何为FTP实现任务?线程可以用于代码执行,而不管它们花费多少时间。任务使用相同的概念,这取决于你发现在概念上更容易编码的东西-我不喜欢sask或线程,只要它们做我想要的。它们的关键是编写您理解的代码,并在不使代码过于复杂的情况下完成工作。请查看链接。