The FTP protocol does not allow a single connected user to perform multiple operations at the same time. Thus you must create an instance of AsyncFtpClient <B>per client connection</B>. The class enforces this FTP protocol limitation by managing a single connection at a time.
So the answer is #2, but with a remark: The AsyncFtpClient uses the .NET Framework thread pool. Thus, if you create 20 instances of AsyncFtpClient, and only use async method calls (those that start with Begin), you won’t need to create any thread. Simply manage your 20 instances and their pending async calls. I prefer this approach as opposed to creating 20 threads yourself, each one managing an instance of FtpClient or AsyncFtpClient.
Applies to Xceed FTP for .NET. Imported from legacy forums. Posted by Martin (had 3774 views)