void CacheController_RefreshCompleted(object sender, RefreshCompletedEventArgs e) { this.Flush(); SyncCompletedEventArgs args = new SyncCompletedEventArgs(e.Cancelled, e.Error, e.Statistics); this.OnSyncCompleted(args); }
/// <summary> /// Handles the cache controller refresh completed event. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void CacheController_RefreshCompleted(object sender, RefreshCompletedEventArgs e) { SyncInactive = true; if (e.Error == null) { LastSyncStatus = "Synchronization with service completed successfully"; } else { LastSyncStatus = "Synchronization failed: " + e.Error.ToString(); } }
public override async Task <bool> RefreshItemsAsync() { isRefreshing = true; sourceCancel = new CancellationTokenSource(); cancelToken = sourceCancel.Token; bool isOK = false; int oldItemCount = itemCount; if (forceRefresh) { oldItemCount = itemCount; itemCount = -1; forceRefresh = false; } try { (bool isSucces, List <IContentItem> list, string error) = await yClient.FetchAllItemsAsync(whichPage, itemCount, cancelToken).ConfigureAwait(false); isOK = isSucces; itemCount = oldItemCount; errorMessage = error; if (isOK && !cancelToken.IsCancellationRequested) { newItems.Clear(); var keepItems = new List <IContentItem>(); var newIds = new List <int>(); var keepIds = new List <int>(); int howManyToFetch = list.Count >= itemCount ? itemCount : list.Count; var newIdsList = new List <int>(howManyToFetch); for (int i = 0; i < howManyToFetch; i++) { newIdsList.Add(list[i].ItemId); } for (int i = 0; i < howManyToFetch; i++) { if (cancelToken.IsCancellationRequested) { isOK = false; break; } if (!currentIds.Contains(newIdsList[i])) { newItems.Add(list[i]); newIds.Add(newIdsList[i]); } else { keepItems.Add(list[i]); keepIds.Add(newIdsList[i]); } } currentItems.Clear(); currentIds.Clear(); foreach (IContentItem item in keepItems) { currentItems.Add(item); currentIds.Add(item.ItemId); } foreach (IContentItem item in newItems) { currentItems.Add(item); currentIds.Add(item.ItemId); } } } catch (TaskCanceledException te) { errorMessage = $"{errorMessage}: {te.ToString()}"; Logger.Log(errorMessage, Logger.Level.Error); } if (sourceCancel != null) { sourceCancel.Dispose(); } sourceCancel = null; var e = new RefreshCompletedEventArgs(isOK); OnRefreshCompleted(e); itemCount = oldItemCount; isRefreshing = false; return(isOK); }