locked
Процесс рагрузки данных ProgressChanged RRS feed

  • Вопрос

  • Всем привет. Недавно пересел с WP7 на Windows 8

    Пишу программу, которая грузит json данные. Использую аналог WebClient - HttpClient. Но тут возник вопрос.

    У WebClient был удобный метод DownloadProgressChanged, где можно было узнать размер файла, процент загрузки и сколько скачано.

            void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
            {
                speedDownloading.Text = (Convert.ToDouble(e.BytesReceived) / 1024 / sw.Elapsed.TotalSeconds).ToString("0.00") + "Кб/с")
               totalDownloading.Text = "Закачано: " + (Convert.ToDouble(e.BytesReceived) / 1024).ToString("0.00") + "Кб / Всего: " + (Convert.ToDouble(e.TotalBytesToReceive) / 1024).ToString("0.00") + "Кб / " + e.ProgressPercentage.ToString() + "%";
           }

    Как сделать то же самое на Windows 8.

    Вот мой рабочий код:

    using (HttpClient getProfileU_Client = new HttpClient())
                {
                    string uriU = string.Format("https://api.vk.com/method/users.get?fields=photo_100&access_token={0}", App.vkToken);
                    Uri url = new Uri(uriU);

                    using (HttpResponseMessage response = await getProfileU_Client.GetAsync(url))
                    {
                        response.EnsureSuccessStatusCode();
                        using (HttpContent content = response.Content)
                        {
                            using (Stream result = await content.ReadAsStreamAsync())
                            {
                                DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(ProfilesGet));
                                ProfilesGet profiles = (ProfilesGet)serializer.ReadObject(result);

                                photo_50U.Source = new BitmapImage(new Uri(profiles.response[0].photo_100, UriKind.RelativeOrAbsolute));
                                first_nameU.Text = profiles.response[0].first_name;
                                last_nameU.Text = profiles.response[0].last_name;
                                userProfile.Visibility = Visibility.Visible;
                            }                        
                        }
                    }
                }

    Всё работает, но клиент не знает что происходит с приложением. Конечно можно вывести сообщение о начале загрузки и о конце, но хотелось бы интерактивности.

    16 марта 2015 г. 7:06

Ответы

  • Добавьте элемент ProgressBar в  XAML

    <ProgressBar x:Name="progressBar1" IsIndeterminate="False" Maximum="100" Height="10" Width="200"/>
    и в вашем коде свойству  ProgressBar1.Value  присвойте число которое будет показывать выполнение загрузки   

    • Помечено в качестве ответа Yatajga 21 марта 2015 г. 13:27
    18 марта 2015 г. 14:51

Все ответы

  • Добавьте элемент ProgressBar в  XAML

    <ProgressBar x:Name="progressBar1" IsIndeterminate="False" Maximum="100" Height="10" Width="200"/>
    и в вашем коде свойству  ProgressBar1.Value  присвойте число которое будет показывать выполнение загрузки   

    • Помечено в качестве ответа Yatajga 21 марта 2015 г. 13:27
    18 марта 2015 г. 14:51
  • Почитайте тут
    18 марта 2015 г. 15:20