2010-03-08 8 views
1

내가.NET WebClient 태그 속성 또는 다운로드 추적

private void btnDownload_Click(object sender, EventArgs e) 
     { 
      WebClient webClient = new WebClient(); 
      webClient.Credentials = new NetworkCredential("test", "test"); 
      webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed); 
      webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged); 
      webClient.DownloadFileAsync(new Uri("ftp://2.1.1.1:17865/zaz.txt"), @"c:\myfile.txt"); 
     } 

     private void ProgressChanged(object sender, DownloadProgressChangedEventArgs e) 
     { 
      progressBar1.Value = e.ProgressPercentage; 
     } 

     private void Completed(object sender, AsyncCompletedEventArgs e) 
     { 

      MessageBox.Show("Download completed!"); 
     } 

이제 다운로드가 잘 작동을 사용하여 웹 서버에서 비동기 파일 다운로드를 구현하기 위해 노력하고, 내가 알고 싶은 것은 다음과 같습니다 내가에 1 개 이상의 다운로드를해야합니다 가정 시간, 각 다운로드를 추적하고 진행 상황을 별도로보고하는 가장 좋은 방법은 무엇입니까? WebClient의 태그 속성을 찾고 있지만 찾지 못했습니다.

답변

3

당신은 DownloadFileAsync (userToken)에 세 번째 인수를 전달할 수 있습니다 감사합니다. 원하는 항목이 될 수 있으며 DownloadProgressChanged 이벤트 인수 (UserState 속성)에서 검색 할 수 있습니다. 따라서 URI 나 일부 고유 ID를 사용자 토큰으로 전달해야하므로 진행률이 변경된 다운로드를 확인할 수 있습니다.

+0

매우 좋습니다! 정확히 내가 무엇을 찾고 있었는지. 그래서 내 UserState는 항상 null을 반환했습니다. 왜냐하면 나는 UserToken으로 DownloadFileAsync를 호출하지 못했습니다! Duh .. 당신은 생명의 은인입니다 - 감사합니다 –

+0

이 예제가 asp.net 페이지에서 사용될 수 있다면 설명해 주시겠습니까? 누군가가 URL을 입력하고 다운로드를 클릭 할 수있는 텍스트 상자를 만들고 싶습니다. 파일이 백그라운드에서 다운로드되고 완료되면 페이지에서 사용자에게 알려줍니다. 파일은 FTP를 통해 또는 웹 사이트에서 직접 가져올 수 있습니다. – riaandelange