Обновление ProgressBar при Asyn c и ожидании получения HttpRequest в C# Caliburn Micro WPF - PullRequest
0 голосов
/ 05 августа 2020

Я надеюсь обновить статус индикатора выполнения при загрузке строки из HttpGet Request. При получении данных в методах OnActivate класса экрана прогресс не обновляется.

Вот мой код экрана.

public class LoadingAccountInfoViewModel:Screen, INotifyPropertyChanged
    {
        private readonly IEventAggregator _eventAggregator;

        // Loading Progrss Bar...
        private int loadingAccountInfoProgressBar;
        public int LoadingAccountInfoProgressBar
        {
            

            get { return loadingAccountInfoProgressBar; }
            set
            {
                if (loadingAccountInfoProgressBar == value)
                {
                    return;
                }
                loadingAccountInfoProgressBar = value;
                NotifyOfPropertyChange(() => LoadingAccountInfoProgressBar);
            }
        }

        public LoadingAccountInfoViewModel(IEventAggregator eventAggregator) {
            _eventAggregator = eventAggregator;
        }

        protected async override void OnInitialize()
        {
            await Task.Factory.StartNew(() =>
            {
                loadingAccountInfoProgressBar = 2;
                for (int i = 0; i < 5; i++)
                {
                    loadingAccountInfoProgressBar += 10;
                }
            }, TaskCreationOptions.AttachedToParent);
        }



        protected override async void OnActivate()
        {
            base.OnActivate();
            User currentUser = Global.currentUser;
            XCService xcService = new XCService();
 
            LiveStream[] liveStreams = await xcService.GetLiveStreams(currentUser.username, currentUser.password, "get_live_streams");
            VodStream[] vodStreams = await xcService.GetVodStreams(currentUser.username, currentUser.password, "get_vod_streams");
            SerieStream[] serieStreams = await xcService.GetSerieStreams(currentUser.username, currentUser.password, "get_series");

            // loadingAccountInfoProgressBar += 10;

            _eventAggregator.PublishOnUIThread(new LoadingInfoDoneMessage());

        }

        protected override void OnDeactivate(bool close)
        {
            base.OnDeactivate(close);
        }
    }

xaml UserControl об этом классе выглядит следующим образом:

<UserControl x:Class="ProIPTV.Pages.Content.Views.LoadingAccountInfoView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:ProIPTV.Pages.Content.Views"
             mc:Ignorable="d" >
    <Grid HorizontalAlignment="Center" VerticalAlignment="Center">
        <StackPanel >
            <Image Source="logo.png" Height="59" />
            <TextBlock Text="s t r i m o" FontSize="68" TextAlignment="Center" Foreground="#808182" Margin="0,0,0,188" />
            <TextBlock Text="LOADING ACCOUNT" FontSize="30" Foreground="#808182" TextAlignment="Center" Margin="0,0,0,62.5"/>
            <ProgressBar x:Name="LoadingAccountInfoProgressBar" Value="{Binding Path=LoadingAccountInfoProgressBar}" Style="{DynamicResource CornerProgressBar}" Height="12" Width="592" Foreground="#80F5F5F5"/>
        </StackPanel>
    </Grid>
</UserControl>

Я получил данные с помощью HttpGetRequest в методе OnActivate.

Обновление статуса ProgressBar выполняется в методе OnInitialize ().

Пожалуйста, помогите мне исправить индикатор выполнения обновления отчет во время получения данных.

Я новичок в Caliburn Micro WPF MVVM. Подскажите, пожалуйста, как это исправить.

...