2

リモートの場所からファイルをダウンロードしようとしています。しかし、ダウンロードの直前に、同じくリモートの場所にある Web サービスからファイルの場所を取得します。

問題は、時間の経過とともにパフォーマンスが低下することです。ダウンロードされたファイルの数は、3 分で約 2k から、1 時間か 2 時間後には 300 ~ 400 に減少し、250k のファイルがあります。

サービスまたはダウンロードに問題がありますか? または両方?

サービスから名前を取得した後、次のようにファイルをダウンロードします。

try
{
   using (WebClient client = new WebClient())
   {
     if (File.Exists(filePath + "/" + fileName + "." + ext))
     {
        return "File Exists: " + filePath + "/" + fileName + "." + ext;
     }
     client.DownloadFile(virtualPath, filePath + "/" + fileName + "." + ext);
     return "Downloaded: " + filePath + "/" + fileName + "." + ext;
   }
 }
 catch (Exception e)  {
      return"Problem Downloading " + fileName + ": " + e.Message;
 }
4

2 に答える 2

0
if (File.Exists(filePath + "/" + fileName + "." + ext))

ボトルネックはおそらくここにあります。1 つのフォルダーに膨大な量のファイルがある場合、この名前のファイルが既に存在するかどうかを確認するには、完了するまでに時間がかかる場合があります。そのため、ファイルを別のフォルダーに保存したい場合があります

于 2013-02-08T12:56:35.750 に答える
0

問題は、richTextBoxlabelに付けられた情報でした。

rtb には、個々の要素に何が起こったかに関する情報が追加されました。ラベルは、私たちがどの要素にいたかを示しました。どうやらCPUはそれを処理できず、これは長時間実行すると大きな問題になります。それはあまりにも多くの CPU を消費し、最終的にアプリケーションを終了させました。出力を削除または制限することで、ほとんどすべての問題が解決しました。

一方、まだ存在するダウンロードのわずかな低下 ( 2.5 時間後に毎分1.5kから1.2k ) は謎のままです。

于 2013-02-11T13:49:00.273 に答える