示例#1
0
        /// <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);
     }
 }
示例#3
0
        /// <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);
 }
示例#5
0
        /// <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();
        }
示例#6
0
        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);
            }
        }
示例#7
0
        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());
        }
示例#8
0
        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)
        {
        }
示例#9
0
        /// <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);
        }
示例#11
0
 public static void Start(BackgroundTaskRegistrationGroup sender, BackgroundActivatedEventArgs args)
 {
     Start(args.TaskInstance);
 }
示例#12
0
        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);
        }
示例#13
0
 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));
 }
示例#14
0
 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));
 }
示例#15
0
        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);
        }
示例#16
0
        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);
        }