public async Task LoadResults(ObservableResultCollection collection, uint count) { bool loadFailed = false; var task = Task <IEnumerable <IDictionary <string, object> > > .Factory.StartNew(() => { try { var odataClient = new ODataClient(collection.ServiceUrl); return(odataClient .From(collection.CollectionName) .Skip(collection.Count) .Top(Math.Max((int)count, PageSize)) .FindEntries()); } catch (Exception exception) { loadFailed = true; var error = new Dictionary <string, object>() { { "Error", exception.InnerException == null ? exception.Message : exception.InnerException.Message } }; return(new List <IDictionary <string, object> > { error }); } }); collection.MainPage.EnableResultProgressBar(true); var results = await task; collection.MainPage.EnableResultProgressBar(false); if (results != null) { collection.HasMoreItems = results.Any() && !loadFailed; foreach (var result in results) { collection.Add(new ResultDataItem(result, collection.Table)); } _results.Count = (uint)results.Count(); } else { collection.HasMoreItems = false; } _asyncStatus = AsyncStatus.Completed; if (Completed != null) { Completed(this, _asyncStatus); } }
public ResultLoader(ObservableResultCollection collection, uint count) { LoadResults(collection, count); }