Наша цель - чистый код, который работает.
четверг, 31 октября 2013 г.
воскресенье, 27 октября 2013 г.
Асинхронная загрузка данных с индикацией
Я как-то уже затрагивал тему асинхронной загрузки данных в своей статье TaskExtensions в помощь. Однако, используя такой подход, код со временем начинал обрастать огромным количеством callback'ов и командами. Чтобы оптимизировать данный процесс для своих нужд я сделал класс, которым и хочу поделиться. Ничего нового в нем нет, однако, он позволил сократить огромное количество кода и на мой взгляд является весьма интересным.
Суть класса такова: предоставить пользователю коллекцию динамических данных с выдачей уведомлений при обновлении, а также обеспечить механизм индикации загрузки данных, при этом выбор источника данных предоставить потребителю.
Самый классический сценарий для UI-девелопера: список объектов и кнопка "Обновить". Я решил совместить это в одной коллекции:
Самый классический сценарий для UI-девелопера: список объектов и кнопка "Обновить". Я решил совместить это в одной коллекции:
public sealed class AsyncObservableCollection<T> : ObservableCollection<T>, ICommand { private readonly Func<Object, Task<IEnumerable<T>>> factory; public AsyncObservableCollection(Func<Object, Task<IEnumerable<T>>> factory) { this.factory = factory; } }
Подписаться на:
Сообщения (Atom)