2011-01-04 11 views
1

イムは、ダウンロード速度のテストを作成し、イムは私がダウンロード中memStreamArrayしているどのように多くのビットをチェックするにはどうすればよいバイト配列のビット数をチェックする方法は?

webClient.DownloadDataAsync(new Uri(link), memStreamArray); 

でメモリストリームにバイト[]に800megabitファイルをダウンロードしますか? 私はリアルタイムで速度を得るためにサイズ/時間の計算をすることができますので、これが必要です。

この計算をwebClient.DownloadProgressChangedイベントで実行する予定です。

+3

私は誰もが最近覚えている記憶があると知っていますが、RAMに800MBを入れることはベストアイデアのようには思えません。 – Kendrick

+0

ほとんどのマシンで100メガバイト= 800メガビット、100メガバイトが管理可能です。 – newandfresh

答えて

3

このためには、DownloadProgressChangedイベントハンドラが必要です。 DownloadDataAsyncメソッドの2番目のパラメータは、コールバックのUserState変数で取得できるオブジェクトに過ぎません。パススルーに過ぎません。シナリオでは使用できない可能性があります。

WebClient webClient = new WebClient(); 
webClient.DownloadProgressChanged += delegate(object sender, DownloadProgressChangedEventArgs e) 
{ 
    Console.WriteLine(e.BytesReceived); 
}; 

webClient.DownloadDataAsync(new Uri(link)); 
+0

おかげで、私は必要なものでした – newandfresh

1

このスレッドの安全性についてはわかりませんが、メモリストリームのLengthプロパティを確認できます。それはバイト単位の長さを与え、ビットに変換するだけです。

+0

私はすでにこれをテストしていて、安全でないものを持っていた。 – newandfresh

+0

@newandfresh私はそれがスレッドセーフではないという疑いがあった。確認していただきありがとう:) – pstrjds

1

1バイト= 8ビットであり、バイトアライがあります。配列内のバイト数を8で何倍になるかを数えます。それは間違いないのでしょうか?

+0

ええ、私は仲間を知って、私はロジックにBytesReceivedを取得するためにvarにしていた。 – newandfresh

関連する問題