public void LazyLoading(IEnumerable <T> views) { var awaiter = LoadSegmentLazily(views).GetAwaiter(); awaiter.OnCompleted(() => { try { awaiter.GetResult(); OnLazyLoadingCompleted?.Invoke(this, new AdapterLazyLoadingEventArgs(true, null)); } catch (Exception ex) { OnLazyLoadingCompleted?.Invoke(this, new AdapterLazyLoadingEventArgs(false, ex)); } }); }
public void Load() { if (_loading) { return; } _loading = true; var getViewModelsAwaiter = GetViewModels().GetAwaiter(); getViewModelsAwaiter.OnCompleted(() => { try { var viewModels = getViewModelsAwaiter.GetResult(); Items.Clear(); Items.AddRange(viewModels); OnGetDataCompleted(); OnAdapterLoaded?.Invoke(this, new AdapterLoadingEventArgs(true, null)); Loaded = true; if (LazyLoadingSettings == ELazyLoadingSettings.LoadEverything) { var loadDataLazilyAwaiter = LoadDataLazily().GetAwaiter(); loadDataLazilyAwaiter.OnCompleted(() => { try { loadDataLazilyAwaiter.GetResult(); OnLazyLoadingCompleted?.Invoke(this, new AdapterLazyLoadingEventArgs(true, null)); _loading = false; } catch (Exception ex) { OnLazyLoadingCompleted?.Invoke(this, new AdapterLazyLoadingEventArgs(false, ex)); } }); } else if (LazyLoadingSettings == ELazyLoadingSettings.LoadVisibleSegments) { var loadDataLazilyAwaiter = LoadSegmentLazily(Items.Take(50)).GetAwaiter(); loadDataLazilyAwaiter.OnCompleted(() => { try { loadDataLazilyAwaiter.GetResult(); OnLazyLoadingCompleted?.Invoke(this, new AdapterLazyLoadingEventArgs(true, null)); _loading = false; } catch (Exception ex) { OnLazyLoadingCompleted?.Invoke(this, new AdapterLazyLoadingEventArgs(false, ex)); } }); } else { _loading = false; } } catch (Exception ex) { OnAdapterLoaded?.Invoke(this, new AdapterLoadingEventArgs(false, ex)); } }); }