1

私は単純な関数を使用しています:-

while((br.Read(downbuffer, 0, downbuffer.Length)>0)
{
    //Write the data in downbuffer to a file.
}

ファイルに対してはうまく機能しますが(zipファイルのダウンロードで複数回テスト済み-http://citylan.dl.sourceforge.net/project/cric-scoreslive/v8.5-Live%20Cricket%20Scores%20Desktop%20App.zip)、リンクがHTMLファイルを参照している場合は機能しません(http://www.mediafire.com/?rc3kj22p1tb4vi9でテスト済み)。後のリンクでは、ページが約60 KBであるのに対し、ダウンロードと書き込みは約1KBのデータのみです。フラッシュされないことなどと関係がある場合、ファイルのダウンロードでどのように機能するのか疑問に思いますか?相対コードは次のとおりです:-(別のスレッドで実行)-

wreq = (HttpWebRequest)WebRequest.Create(uri);
wres = wreq.GetResponse();
fs = new FileStream(totalpath, FileMode.Create);
bw = new BinaryWriter(fs);
br = new BinaryReader(wres.GetResponseStream());
while((onecount=br.Read(downbuffer, 0, downbuffer.Length)>0)
{
    bw.Write(downbuffer, 0, onecount);
    totalcount += onecount;
}

totalpathはファイルにつながりますが、特別なことは何もありません。ダウンバッファのサイズは20KBで、インターネットの速度は約60 kBps(512kbps)です。

4

1 に答える 1

4

それを回避することで、問題全体を解決できます。

using (var client = new WebClient())
{
    client.DownloadFile(uri, totalpath);
}
于 2012-10-11T18:00:31.373 に答える