/// <summary> /// Unregister background tasks with specified name. /// </summary> /// <param name="name">Name of the background task to unregister.</param> public static void UnregisterBackgroundTasks(String name, BackgroundTaskRegistrationGroup group = null) { // // If the given task group is registered then loop through all background tasks associated with it // and unregister any with the given name. // if (group != null) { foreach (var cur in group.AllTasks) { if (cur.Value.Name == name) { cur.Value.Unregister(true); } } } else { // // Loop through all ungrouped background tasks and unregister any with the given name. // foreach (var cur in BackgroundTaskRegistration.AllTasks) { if (cur.Value.Name == name) { cur.Value.Unregister(true); } } } UpdateBackgroundTaskRegistrationStatus(name, false); }
static YearProgressBackgrroundUpdaterRegistrationManager() { if (RegistrationGroup == null) { RegistrationGroup = BackgroundTaskRegistration.GetTaskGroup(GROUP_ID) ?? new BackgroundTaskRegistrationGroup(GROUP_ID, FRIENDLY_NAME); } }
/// <summary> /// Retrieve a registered background task group. If no group is registered with the given id, /// then create a new one and return it. /// </summary> /// <returns>The task group associated with the given id</returns> public static BackgroundTaskRegistrationGroup GetTaskGroup(string id, string groupName) { var group = BackgroundTaskRegistration.GetTaskGroup(id); if (group == null) { group = new BackgroundTaskRegistrationGroup(id, groupName); } return(group); }
/// <summary> /// Unregister background tasks with specified name. /// </summary> /// <param name="name">Name of the background task to unregister.</param> public static void UnregisterBackgroundTasks(String name, BackgroundTaskRegistrationGroup group = null) { foreach (var cur in BackgroundTaskRegistration.AllTasks) { if (cur.Value.Name == name) { cur.Value.Unregister(true); } } UpdateBackgroundTaskRegistrationStatus(name, false); }
/// <summary> /// Invoked when this page is about to be displayed in a Frame. /// </summary> /// <param name="e">Event data that describes how this page was reached. The Parameter /// property is typically used to configure the page.</param> protected override void OnNavigatedTo(NavigationEventArgs e) { group = BackgroundTaskSample.GetTaskGroup(BackgroundTaskSample.BackgroundTaskGroupId, BackgroundTaskSample.BackgroundTaskGroupFriendlyName); foreach (var task in group.AllTasks) { if (task.Value.Name == BackgroundTaskSample.GroupedBackgroundTaskName) { AttachProgressAndCompletedHandlers(task.Value); BackgroundTaskSample.UpdateBackgroundTaskRegistrationStatus(BackgroundTaskSample.GroupedBackgroundTaskName, true); break; } } UpdateUI(); }
internal BackgroundTaskRegistrationGroup RegisterBackgroundGroup(string groupId, string groupFriendlyName, TypedEventHandler <BackgroundTaskRegistrationGroup, BackgroundActivatedEventArgs> backgroundActivate = null) { if (IsDisposing) { return(null); } var group = BackgroundTaskRegistration.GetTaskGroup(groupId); if (group != null) { return(group); } else { group = new BackgroundTaskRegistrationGroup(groupId, groupFriendlyName); if (backgroundActivate != null) { group.BackgroundActivated += backgroundActivate; } return(group); } }
internal BackgroundTaskRegistration RegisterBackgroundTaskInAGroup(BackgroundTaskRegistrationGroup group, string taskName, IBackgroundTrigger trigger, string taskEntyPoint = null, IBackgroundCondition condition = null) { foreach (var taskKeyValue in group.AllTasks) { if (taskKeyValue.Value.Name == taskName) { return(taskKeyValue.Value); } } var builder = new BackgroundTaskBuilder { Name = taskName, TaskGroup = group, TaskEntryPoint = taskEntyPoint // Entry point optional for in-process task }; builder.SetTrigger(trigger); if (condition != null) { builder.AddCondition(condition); } return(builder.Register()); }
public BackgroundTaskFacade(string taskEntryPoint, string name, IBackgroundTrigger trigger, IBackgroundCondition condition, BackgroundTaskRegistrationGroup group = null, bool requiresBackgroundAccess = false, OnProgressHandlerArgs OnProgressMethod = null, OnCompletedHandlerArgs OnCompleteMethod = null) : this(RegisterBackgroundTask(taskEntryPoint, name, trigger, condition, group, requiresBackgroundAccess), OnProgressMethod, OnCompleteMethod) { }
/// <summary> /// Register a background task with the specified taskEntryPoint, name, trigger, /// and condition (optional). /// </summary> /// <param name="taskEntryPoint">Task entry point for the background task.</param> /// <param name="name">A name for the background task.</param> /// <param name="trigger">The trigger for the background task.</param> /// <param name="condition">An optional conditional event that must be true for the task to fire.</param> public static BackgroundTaskRegistration RegisterBackgroundTask(String taskEntryPoint, String name, IBackgroundTrigger trigger, IBackgroundCondition condition, BackgroundTaskRegistrationGroup group = null) { if (TaskRequiresBackgroundAccess(name)) { // If the user denies access, the task will not run. var requestTask = BackgroundExecutionManager.RequestAccessAsync(); } var builder = new BackgroundTaskBuilder(); builder.Name = name; if (taskEntryPoint != null) { // If you leave the TaskEntryPoint at its default value, then the task runs // inside the main process from OnBackgroundActivated rather than as a separate process. builder.TaskEntryPoint = taskEntryPoint; } builder.SetTrigger(trigger); if (condition != null) { builder.AddCondition(condition); // // If the condition changes while the background task is executing then it will // be canceled. // builder.CancelOnConditionLoss = true; } if (group != null) { builder.TaskGroup = group; } BackgroundTaskRegistration task = builder.Register(); UpdateBackgroundTaskRegistrationStatus(name, true); // // Remove previous completion status. // TaskStatuses.Remove(name); return(task); }
/// <summary> /// Register a background task with the specified taskEntryPoint, name, trigger, /// and condition (optional). /// </summary> /// <param name="taskEntryPoint">Task entry point for the background task.</param> /// <param name="name">A name for the background task.</param> /// <param name="trigger">The trigger for the background task.</param> /// <param name="condition">An optional conditional event that must be true for the task to fire.</param> public static BackgroundTaskRegistration RegisterBackgroundTask(String taskEntryPoint, String name, IBackgroundTrigger trigger, IBackgroundCondition condition, BackgroundTaskRegistrationGroup group = null) { UnregisterBackgroundTasks(name); if (TaskRequiresBackgroundAccess(name)) { // If the user denies access, the task will not run. var requestTask = BackgroundExecutionManager.RequestAccessAsync(); } var builder = new BackgroundTaskBuilder(); builder.Name = name; builder.TaskEntryPoint = taskEntryPoint; builder.SetTrigger(trigger); if (condition != null) { builder.AddCondition(condition); builder.CancelOnConditionLoss = true; } BackgroundTaskRegistration task = builder.Register(); UpdateBackgroundTaskRegistrationStatus(name, true); var settings = ApplicationData.Current.LocalSettings; settings.Values.Remove(name); return(task); }
public static void Start(BackgroundTaskRegistrationGroup sender, BackgroundActivatedEventArgs args) { Start(args.TaskInstance); }
public static BackgroundTaskRegistration RegisterBackgroundTask(String taskEntryPoint, String name, IBackgroundTrigger trigger, IBackgroundCondition condition, BackgroundTaskRegistrationGroup group = null) { var builder = new BackgroundTaskBuilder(); builder.Name = name; builder.TaskEntryPoint = taskEntryPoint; builder.SetTrigger(trigger); if (condition != null) { builder.AddCondition(condition); //如果在后台任务执行时条件发生了变化,那么它将被取消。 builder.CancelOnConditionLoss = true; } if (group != null) { builder.TaskGroup = group; } BackgroundTaskRegistration task = builder.Register(); SampleBackgroundTaskRegistered = true; //删除以前的完成状态。 var settings = ApplicationData.Current.LocalSettings; settings.Values.Remove(name); return(task); }
public static BackgroundTaskBuilder BuildTask <T>(BackgroundTaskBuilderModel model, bool isNetworkRequested = false, bool cancelOnConditionLoss = true, BackgroundTaskRegistrationGroup group = null) where T : IBackgroundTask { return(BuildTask(model, typeof(T).FullName, isNetworkRequested, cancelOnConditionLoss, group)); }
public static BackgroundTaskBuilder BuildTask(BackgroundTaskBuilderModel model, Type entryPointType, bool isNetworkRequested = false, bool cancelOnConditionLoss = true, BackgroundTaskRegistrationGroup group = null) { return(BuildTask(model, entryPointType.FullName, isNetworkRequested, cancelOnConditionLoss, group)); }
private static BackgroundTaskBuilder BuildTask(BackgroundTaskBuilderModel model, string taskEntryPointName, bool isNetworkRequested = false, bool cancelOnConditionLoss = true, BackgroundTaskRegistrationGroup group = null) { // Specify the background task var builder = BuildTask(model, isNetworkRequested, cancelOnConditionLoss, group); builder.TaskEntryPoint = taskEntryPointName; return(builder); }
public static BackgroundTaskBuilder BuildTask(BackgroundTaskBuilderModel model, bool isNetworkRequested = false, bool cancelOnConditionLoss = true, BackgroundTaskRegistrationGroup group = null) { // Specify the background task var builder = new BackgroundTaskBuilder() { Name = model.Name }; if (model.Trigger != null) { builder.SetTrigger(model.Trigger); } builder.IsNetworkRequested = isNetworkRequested; builder.CancelOnConditionLoss = cancelOnConditionLoss; if (group != null) { builder.TaskGroup = group; } var conditions = model.GetConditions(); if (conditions.Count > 0) { foreach (var condition in conditions) { builder.AddCondition(condition); } } return(builder); }