DownloadStringAysnc - не показывает прогресс - PullRequest
1 голос
/ 01 августа 2009

VS 2008 SP1

Я использую DownloadStringAysnc. Но событие ProgressChanged не показывает прогресс до тех пор, пока строка не будет загружена.

Даже когда я пытаюсь загрузить строку, которая содержится в большом файле. Программы остаются откликом, поэтому я знаю, что что-то делает. Однако, когда прогресс завершен, происходит событие progressChanged.

Я знал, что это происходит с прогрессом Прогресс и выстреломСтроки стрельбы сразу после друг друга. Тем не менее, они должны быть паузой, так как файл довольно большой.

Это фрагмент кода, который я сейчас использую. И выход ниже. Что странно, e.progresspercentage составляет 100%. И, кажется, звонят дважды.

Большое спасибо за любые советы,

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 + " ]");
        }

=========== Редактируется с использованием 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) + " ]");
        }

Результаты такие же:

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

1 Ответ

2 голосов
/ 01 августа 2009

Согласно документации, DownloadStringAsync не сообщает о прогрессе. См. Документацию о событии WebClient.DownloadProgressChanged .

...