C# - 使用BackgroundWorker使用多个FtpWebRequest传输错过的文件

时间:2012-08-28 01:17:31

标签: c# multithreading ftp backgroundworker ftpwebrequest

我有一堆文件,我使用C#传输到单个FTP服务器,其中FtpWebRequest对象用BackgroundWorker包装。这是一对一的关系。因此,对于每个FtpWebRequest,都有一个BackgroundWorker正在完成这项工作。我解雇了其中几个BackgroundWorkers来发送我想要的所有文件。

问题在于它是命中还是错过。有时所有文件都会被传输,有时会丢失一些文件。

目前我正在使用一种解决方法,我检查服务器上是否存在该文件,如果不存在,我会尝试再次发送。这有效,但我觉得这是对真正问题的绷带。

Stackoverflow ...你觉得这里有什么不对吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我通常不使用BackgroundWorker,而是倾向于使用Threads,Tasks或ThreadPool,因此我不确切地知道但我的想法是,您是否尝试附加到RunWorkerCompleted事件并验证A)所有工人完成了B)他们没有失败?您可能遇到过这样一种情况,即FTP将它们全部禁用,并拒绝某些作为垃圾邮件限制技术或当您一次快速触发多个网络请求时可能发生其他此类问题。我也不熟悉FtpWebRequest,但可以绑定多个请求,因此它使用一个连接吗?