私は単純な関数を使用しています:-
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)です。