2011-01-04 4 views
1

임은 다운로드 속도 테스트를 만들고, 메신저 내가 다운로드하는 동안 memStreamArray에 얼마나 많은 비트를 확인할 수있는 방법바이트 배열에서 얼마나 많은 비트를 확인하는 방법?

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

와 메모리 스트림에 바이트 []에 800megabit 파일을 다운로드? 실시간으로 속도를 얻으려면 크기/시간에 대한 계산을 할 수 있어야합니다.

이 계산은 webClient.DownloadProgressChanged 이벤트에서 수행 할 계획입니다.

+3

나는 모두가 요즘 여분의 메모리를 알고 있지만, RAM에 800mb를 두는 것이 가장 좋은 생각 같지는 않습니다. – Kendrick

+0

대부분의 컴퓨터에서 100 메가 바이트 = 800 메가 비트, 100 메가 바이트를 관리 할 수 ​​있습니다. – newandfresh

답변

3

이 경우에는 DownloadProgressChanged 이벤트 처리기가 필요합니다. DownloadDataAsync 메서드의 두 번째 매개 변수는 콜백 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 비트이고 바이트 arrray가 있습니다. 배열에서 얼마나 많은 바이트를 8로 곱할 지 계산하십시오. 또는 그것은 트릭 질문입니까?

+0

예, 나는 배우자를 알고, 나는 논리에 따라 BytesReceived을 var에 넣습니다. – newandfresh

관련 문제