Я новичок в асинхронном программировании. Я создаю приложение WP8.Индикатор выполнения с WP8 (MVVM) и асинхронный веб-сервис
То, что я хотел бы иметь
Я хотел бы показать список, например, Новости. При нажатии кнопки прослушиваются:
- должен появиться proggress индикатора,
- данные должны быть загружены и отображены,
- индикатор прогресса должен ив.
То, что я до сих пор:
метод в ссылочного WebService:
void GetNewsAsync()
{
//...
}
Два метода в ViewModel:
public void GetNewsFromService()
{
//call webservice
//...
client.GetNewsCompleted += client_GetNewsCompleted;
client.GetNewsAsync(startDate);
}
void client_GetNewsCompleted(object sender, GetNewsCompletedEventArgs e)
{
//save result from webservice to db
//update viewmodel property
//...
}
метод OnClick в представлении для кнопка «sync»:
void appBarSyncButton_Click(object sender, EventArgs e)
{
TurnOnProgressBar();
_viewModel.GetNewsFromService();
//TurnOffProgressBar();
}
Все работает (веб-сервис называется, результат сохранения данных, список обновляется, но ...
Как переделать этот код, чтобы сообщить мнение для того, чтобы скрыть прогресс индикатор (когда все работы завершены)?
lisp имеет очень хорошее решение, я всегда использую базовый класс для всех своих ViewModels, для которых для этого есть свойство IsBusy (bool). При необходимости просто установите значение true или false, и ваш View может использовать это для переключения видимости – Depechie