2009-08-01 6 views
1

VS 2008 SP1DownloadStringAysnc - 進行状況を表示しない

私はDownloadStringAysncを使用しています。しかし、ProgressChangedイベントは、文字列がダウンロードされるまで進行状況を表示しません。

大きなファイルに含まれている文字列をダウンロードしようとしても。プログラムは応答のままですので、何かをしていることがわかります。ただし、進行状況が完了してprogressChangedイベントが発生したときです。

私はこれをprogressChangedとDownloadStringCompletedとして知られています。ただし、ファイルがかなり大きいので、一時停止する必要があります。

これは現在使用しているコードスニペットです。そしてその出力は以下の通りです。 e.progresspercentageが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

あなたのコードでは、本当にメソッドのシグネチャに角かっこから8つ分だけインデントされていますか?前に見たことがあるときはいつも、コードを入力するのは間違いだと思っていましたが、あなたはどこにいてもそれを見ることができます。 –

答えて

2

文書によると、DownloadStringAsyncは、進捗状況を報告しません。 WebClient.DownloadProgressChanged Eventのドキュメントを参照してください。

+1

こんにちは、私は自分のソースコードを編集しました。今私はDownloadDataAysncを使用しています。そのウェブサイトによると、進捗状況を示す必要があります。しかし、結果は同じです。ありがとう。 – ant2009

関連する問題