0

C# を使用して、BackgroundWorker でラップされた FtpWebRequest オブジェクトを使用して、単一の FTP サーバーに転送するファイルが多数あります。これは 1 対 1 の関係です。したがって、すべての FtpWebRequest に対して、ジョブを実行する 1 つの BackgroundWorker があります。これらの BackgroundWorker をいくつか起動して、必要なすべてのファイルを送信します。

問題は、当たりか外れかです。すべてのファイルが転送されることもあれば、一部のファイルが失われることもあります。

現在、ファイルがサーバーに存在するかどうかを確認し、存在しない場合は再度送信するという回避策を使用しています。これは機能しますが、これは実際の問題に対する包帯のように感じます.

Stackoverflow ...ここで何が間違っていると思いますか?

ありがとう!

4

1 に答える 1

0

私は通常、BackgroundWorker を使用しませんが、Threads、Tasks、または ThreadPool を使用する傾向があるため、正確にはわかりませんが、私の考えでは、RunWorkerCompleted イベントにアタッチしてみて、A) すべてのワーカーが完了し、 B) 失敗はありませんでしたか? FTP がそれらすべてを高速化し、一部を拒否するという状況があった可能性があります。これは、スパム スロットリング テクニックや、複数のネットワーク リクエストを一度にすばやく送信した場合に発生する可能性のあるその他の問題です。私は FtpWebRequest にも慣れていませんが、1 つの接続を使用するように複数の要求を関連付けることはできますか?

于 2012-09-01T05:29:01.633 に答える