2009-08-01 4 views
1

VS 2008 SP1DownloadStringAysnc - 진행 상황을 표시하지 않습니다.

DownloadStringAysnc를 사용하고 있습니다. 그러나 ProgressChanged 이벤트는 문자열을 다운로드 할 때까지 진행 상황을 표시하지 않습니다.

큰 파일에 들어있는 문자열을 다운로드하려고해도. 프로그램은 응답을 유지하므로 뭔가하는 것으로 알고 있습니다. 그러나 진행 상황이 완료되어 progressChanged 이벤트가 발생합니다.

나는 이것을 progressChanged 및 DownloadStringCompleted로 즉시 알았다. 그러나 파일이 상당히 크기 때문에 일시 중지해야합니다.

이것은 현재 사용중인 코드 조각입니다. 그리고 아래 출력. e.progresscentcentage가 100 % 이상한 것은 이상합니다. 그리고 두 번 불리는 것 같습니다. 편집이 DownloadDataAysnc의 ===============

wbCheckUpdates.DownloadDataAsync(new Uri(Path.Combine(webServerURL, "version.txt")), "Version1"); 


void wbCheckUpdates_DownloadDataCompleted(object sender, DownloadDataCompletedEventArgs e) 
     { 
      byte[] result = e.Result;   
      Console.WriteLine("Completed data: [ " + System.Text.ASCIIEncoding.Default.GetString(result) + " ]"); 
     } 
를 사용하는 조언에 대한

많은 감사,

Output in the progress changed event 
Progress changed Version userstate: [ Version1 ] 
progressBar1.Value [ 100 ] 
Progress changed Version userstate: [ Version1 ] 
progressBar1.Value [ 100 ] 
Completed Version userstate: [ Version1 ] 


private void UpdateAvailable() 
     { 
      WebClient wbCheckUpdates = new WebClient(); 
      wbCheckUpdates.DownloadProgressChanged += new DownloadProgressChangedEventHandler(wbCheckUpdates_DownloadProgressChanged); 
      wbCheckUpdates.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wbCheckUpdates_DownloadStringCompleted); 
      DownloadFiles df = new DownloadFiles(); 
      string webServerURL = df.webServerPath; 

      wbCheckUpdates.DownloadStringAsync(new Uri(Path.Combine(webServerURL, "version.txt")), "Version1"); 
     } 




void wbCheckUpdates_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) 
     { 
      Console.WriteLine("Progress version changed userstate: [ " + e.UserState + " ]"); 
      progressBar1.Value = e.ProgressPercentage; 
      Console.WriteLine("progressBar1.Value [ " + this.progressBar1.Value + " ]"); 
     } 

void wbCheckUpdates_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) 
     { 
      Console.WriteLine("Completed version userstate: [ " + e.UserState + " ]"); 
     } 

===========

결과는 동일합니다

Progress changed Version userstate: [ Version1 ] 
progressBar1.Value [ 100 ] 
Progress changed Version userstate: [ Version1 ] 
progressBar1.Value [ 100 ] 
Completed data: [ 1.0.11 ] 
+0

그냥 궁금 해서요. 코드에서 대괄호로부터 여덟 칸을 들여 쓰는 방법 서명이 정말로 있습니까? 이전에 보았을 때 코드를 입력하는 것이 실수라고 생각했지만 어디에서나 볼 수 있습니다. –

답변

2

이 문서에 따르면, DownloadStringAsync 진행 상황을보고하지 않습니다. WebClient.DownloadProgressChanged Event의 설명서를 참조하십시오.

+1

안녕하세요, 내 질문에 내 소스 코드를 편집했습니다. 이제 DownloadDataAysnc를 사용하고 있습니다. 해당 웹 사이트에 따라 진행 상황을 보여 주어야합니다. 그러나 결과는 같습니다. 감사. – ant2009

관련 문제