casillas
casillas

Reputation: 16813

Display progress bar while data is loading

I am trying to display a progress bar while data is loading and once data is loaded I want to hide the progress bar.

For the testing purpose, I have just added 10 seconds and it works.

private async Task ProgressBarAsync()
{
    _isProgressVisible = true;
   RaisePropertyChanged(() => IsProgressVisible);

   await Task.Delay(TimeSpan.FromSeconds(10)).ConfigureAwait(false);

    isProgressVisible = false;
    RaisePropertyChanged(() => IsProgressVisible);
}

However, in the following actual code, does not show progress bar.

private async Task RefreshStudentList()
{
   //display progressbar
   _isProgressVisible = true;
   RaisePropertyChanged(() => IsProgressVisible);

   // load data
   var task =  _studentService.GetStudentAsync();
   await task;
   Students = new ObservableCollection<StudentViewModel>(task.Result.ConvertAll(x => new ClassViewModel(x)));

   //hide progressbar
   _isProgressVisible = false;
    RaisePropertyChanged(() => IsProgressVisible);
}

Upvotes: 0

Views: 796

Answers (1)

hugo
hugo

Reputation: 1859

Try this using InvokeOnMainThread:

private async Task RefreshStudentList()
{
   //display progressbar
   _isProgressVisible = true;
   InvokeOnMainThread(() => RaisePropertyChanged(() => IsProgressVisible));

   // load data
   var data =  await _studentService.GetStudentAsync();
   Students = new ObservableCollection<StudentViewModel>
       (data.ConvertAll(x => new ClassViewModel(x)));

   //hide progressbar
   _isProgressVisible = false;
   InvokeOnMainThread(() => RaisePropertyChanged(() => IsProgressVisible));
}

Upvotes: 0

Related Questions