我正在创建一个下载速度测试,并使用
将800兆位文件下载到内存流中的Byte []webClient.DownloadDataAsync(new Uri(link), memStreamArray);
如何在下载时检查memStreamArray中有多少位? 我需要这个,所以我可以对大小/时间进行计算,以实时获得速度。
我计划在webClient.DownloadProgressChanged事件中执行此计算。
答案 0 :(得分:3)
您需要一个DownloadProgressChanged事件处理程序。 DownloadDataAsync
方法中的第二个参数只是一个可以在回调UserState变量中检索的对象,它只是传递 - 你可能在你的场景中没有用它。
WebClient webClient = new WebClient();
webClient.DownloadProgressChanged += delegate(object sender, DownloadProgressChangedEventArgs e)
{
Console.WriteLine(e.BytesReceived);
};
webClient.DownloadDataAsync(new Uri(link));
答案 1 :(得分:1)
不确定线程的安全性,但您可以检查内存流的Length
属性。这将给出以字节为单位的长度,然后只转换为位。
答案 2 :(得分:1)
1个字节= 8位,你有一个字节数组。计算你在数组中有多少字节乘以8.或者这是一个技巧问题吗?