protected override async void OnBackgroundActivated(BackgroundActivatedEventArgs args) { BackgroundTaskDeferral deferral = args.TaskInstance.GetDeferral(); BackgroundTaskHelper.Current.IsRunning = true; try { if (!await viewModel.Api.IsAuthorized()) { return; } if (args.TaskInstance.Task.Name == BackgroundTaskHelper.TimerBackgroundTaskBuilderName) { Settings.Current.SyncTimerTime = DateTime.Now; await BackgroundTaskHelper.Current.Start(viewModel.Syncs, viewModel.Api); } Queue <SyncPairHandler> syncs = BackgroundTaskHelper.Current.Queue; while (syncs.Count > 0) { SyncPairHandler handler = syncs.Dequeue(); await handler.Start(); SyncPair sync; if (!handler.IsTestRun && handler.State == SyncPairHandlerState.Finished && viewModel.Syncs.TryFirst(s => s.Token == handler.Token, out sync)) { sync.Result = handler.NewResult.ToArray(); } } } catch (Exception e) { Settings.Current.OnSyncException(e); } finally { BackgroundTaskHelper.Current.IsRunning = false; SaveSyncs(); deferral.Complete(); } }
private void BackgroundTaskHelper_AddedHandler(object sender, SyncPairHandler e) { handlers[e.Token].Output = e; }
private void IbnHandlerDetails_Click(object sender, RoutedEventArgs e) { SyncPairHandler handler = (SyncPairHandler)((FrameworkElement)sender).DataContext; Frame.Navigate(typeof(SyncPairHandlingPage), handler); }