Вопрос

VS 2008 SP1

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

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

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

Это фрагмент кода, который я сейчас использую. И выход ниже. Что странно, 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 ]
Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top