DOBON.NET DOBON.NETプログラミング掲示板過去ログ

何%完了したのか

環境/言語:[Windows XP SP2 VB.NET 2002]
分類:[.NET]

2004/10/18(Mon) 01:20:27 編集(投稿者)

他のVB関連のサイトの掲示板でも同じことを質問したのですが、
まったくレスがつかなかったのでこちらで再度質問させていただきます。

System.Net.Webclient.DownloadFileでファイルをダウンロードする際、
ファイルのサイズが大きいと時間がかかるので何%完了したのかを表示したいのですが、
どのようにしたらよいのでしょうか。
> System.Net.Webclient.DownloadFileでファイルをダウンロードする際、
> ファイルのサイズが大きいと時間がかかるので何%完了したのかを表示したいのですが、
> どのようにしたらよいのでしょうか。

DOBON.NET .NET Tips - WebRequest、WebResponseクラスを使ってファイルをダウンロードし保存する
http://dobon.net/vb/dotnet/internet/webrequestsavefile.html

のようにHttpWebRequestを使ってダウンロードしてください。
> DOBON.NET .NET Tips - WebRequest、WebResponseクラスを使ってファイルをダウンロードし保存する
> http://dobon.net/vb/dotnet/internet/webrequestsavefile.html
>
> のようにHttpWebRequestを使ってダウンロードしてください。

教えていただいたページを見て、ファイルをダウンロードすることはできたのですが、
HttpWebRequestについてヘルプやネットでいくら調べても
ダウンロードが何%完了しているのかを常に表示する方法が分かりません。
具体的にはどのようにしたらよいのでしょうか。
どこが分からないのかを明確にしていただけないでしょうか?
> どこが分からないのかを明確にしていただけないでしょうか?

「どこが」と言われても・・・。
http://dobon.net/vb/dotnet/internet/webrequestsavefile.html
のプログラムをいろいろいじくりまわしてみたりもしましたが、自分の知識では限界です。
ファイルをダウンロードする仕組みはなんとなく理解できるのですが、
どのようにしてリアルタイムに何%完了したのかを表示させることができるのかがどうしても分かりません。
おそらく最後の方のWhileのところでやるのだろうということくらいは想像がつくのですが、
DoEventsも入れないといけませんし、ファイルのダウンロード速度がかなり遅くなるような気もします。
ダウンロードする前にファイルの容量も取得しないとできませんし、
その方法もいろいろ調べましたがやはり分かりません。
> おそらく最後の方のWhileのところでやるのだろうということくらいは想像がつくのですが、
> DoEventsも入れないといけませんし、ファイルのダウンロード速度がかなり遅くなるような気もします。
> ダウンロードする前にファイルの容量も取得しないとできませんし、
> その方法もいろいろ調べましたがやはり分かりません。

そこまで分かっていれば、十分だと思いますが。ダウンロードするファイルのサイズは、HttpWebResponse.ContentLengthプロパティなどで取得できます。
2004/10/20(Wed) 08:40:46 編集(投稿者)

> ダウンロードするファイルのサイズは、HttpWebResponse.ContentLengthプロパティなどで取得できます。

HttpWebResponse.ContentLengthでファイルのサイズを取得してなんとか実現できました。
何%完了しているのかを表示させるためにループ中にDoEventsを入れる必要がありますが、
単純にWhileのところにDoEventsを入れるとものすごくダウンロード速度が遅くなるので、
1%ダウンロード完了ごとにDoEventsを入れて表示するといった構造にすることである程度高速化もできました。
それでも表示しないときよりは少し遅いですが、仕方ないですよね。ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板