Как проверить, сколько бит в байтовом массиве? - PullRequest
1 голос
/ 04 января 2011

Я создаю тест скорости загрузки и загружаю 800-мегабитный файл в байт [] в потоке памяти с

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

Как я могу проверить, сколько битов в memStreamArray загружается? Мне это нужно, чтобы я мог рассчитать размер / время, чтобы получить скорость в реальном времени.

Я планирую выполнить этот расчет в событии webClient.DownloadProgressChanged.

Ответы [ 3 ]

3 голосов
/ 04 января 2011

Для этого вам нужен обработчик события DownloadProgressChanged.Второй параметр в методе DownloadDataAsync - это просто объект, который вы можете получить в переменной обратного вызова UserState, он просто сквозной - вы, вероятно, не используете его в своем сценарии.

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

webClient.DownloadDataAsync(new Uri(link));
2 голосов
/ 04 января 2011

1 байт = 8 бит, и у вас есть массив байтов.Посчитайте, сколько байтов у вас в массиве, умножьте на 8. Или это вопрос с подвохом?

1 голос
/ 04 января 2011

Не уверен в безопасности потока, но вы можете проверить свойство Length потока памяти. Это даст длину в байтах, а затем просто конвертировать в биты.

...