public async Task RegisterBackgroundTasks()
        {
            isSystemTaskRegistered = GetTaskStatus(SYSTEM_TRIGGERED_TASK_NAME);
            isTimeTaskRegistered   = GetTaskStatus(TIME_TRIGGERED_TASK_NAME);

            if (!isSystemTaskRegistered)
            {
                var trigger = new SystemTrigger(SystemTriggerType.UserPresent | SystemTriggerType.SessionConnected, false);
                SytemTriggeredBackgroundTask = await BackgroundTasksHelper.RegisterBackgroundTask(ENTRY_POINT,
                                                                                                  SYSTEM_TRIGGERED_TASK_NAME,
                                                                                                  trigger,
                                                                                                  null,
                                                                                                  true);

                isSystemTaskRegistered = true;
            }

            if (!isTimeTaskRegistered)
            {
                SystemCondition userPresentCondition = new SystemCondition(SystemConditionType.UserPresent);
                TimeTriggeredBackgroundTask = await BackgroundTasksHelper.RegisterBackgroundTask(ENTRY_POINT,
                                                                                                 TIME_TRIGGERED_TASK_NAME,
                                                                                                 new TimeTrigger(BACKGROUND_RATE, false),
                                                                                                 userPresentCondition,
                                                                                                 true);

                isTimeTaskRegistered = true;
            }
        }
Пример #2
0
        // Registers a background task with an network change system trigger.
        private void RegisterNetworkChangeTask()
        {
            try
            {
                if (NetworkTaskRegistrationGuid != Guid.Empty)
                {
                    IReadOnlyDictionary <Guid, IBackgroundTaskRegistration> allTasks = BackgroundTaskRegistration.AllTasks;
                    if (allTasks.ContainsKey(NetworkTaskRegistrationGuid))
                    {
                        Diag.DebugPrint("Network task is already registered.");
                        return;
                    }
                }

                BackgroundTaskBuilder myTaskBuilder = new BackgroundTaskBuilder();
                SystemTrigger         myTrigger     = new SystemTrigger(SystemTriggerType.NetworkStateChange, false);
                myTaskBuilder.SetTrigger(myTrigger);
                myTaskBuilder.TaskEntryPoint = "Background.NetworkChangeTask";
                myTaskBuilder.Name           = "Network change task";
                BackgroundTaskRegistration myTask = myTaskBuilder.Register();
                NetworkTaskRegistrationGuid = myTask.TaskId;
            }
            catch (Exception exp)
            {
                Diag.DebugPrint("Exception caught while setting up system event" + exp.ToString());
            }
        }
Пример #3
0
        private async void RegisterBackgroundTasks()
        {
            var access = await BackgroundExecutionManager.RequestAccessAsync();

            if (access == BackgroundAccessStatus.AllowedMayUseActiveRealTimeConnectivity || access == BackgroundAccessStatus.AllowedWithAlwaysOnRealTimeConnectivity)
            {
                TimeTrigger taskTrigger = new TimeTrigger(15, false);
                foreach (var _task in BackgroundTaskRegistration.AllTasks)
                {
                    if (_task.Value.Name == "WPGetListUpdateTimer" || _task.Value.Name == "WPGetListUpdateInternet")
                    {
                        _task.Value.Unregister(true);
                    }
                }
                SystemTrigger striger       = new SystemTrigger(SystemTriggerType.InternetAvailable, false);
                var           bgTaskBuilder = new BackgroundTaskBuilder();
                bgTaskBuilder.Name           = "WPGetListUpdateTimer";
                bgTaskBuilder.TaskEntryPoint = "BackgroundTaskWinMD.WPGetListUpdateBackgroundTask";
                bgTaskBuilder.SetTrigger(taskTrigger);
                // условие, согласно которому триггер будет выполнен только если интернет доступен
                SystemCondition internetCondition = new SystemCondition(SystemConditionType.InternetAvailable);
                bgTaskBuilder.AddCondition(internetCondition);
                BackgroundTaskRegistration task = bgTaskBuilder.Register();

                bgTaskBuilder                = new BackgroundTaskBuilder();
                bgTaskBuilder.Name           = "WPGetListUpdateInternet";
                bgTaskBuilder.TaskEntryPoint = "BackgroundTaskWinMD.WPGetListUpdateBackgroundTask";
                bgTaskBuilder.SetTrigger(striger);

                bgTaskBuilder.AddCondition(internetCondition);
                BackgroundTaskRegistration task2 = bgTaskBuilder.Register();
            }
        }
Пример #4
0
        // Registers a background task with a network change system trigger.
        private void RegisterNetworkChangeTask()
        {
            try
            {
                // Delete previously registered network status change tasks as
                // the background triggers are persistent by nature across process
                // lifetimes.
                foreach (var cur in BackgroundTaskRegistration.AllTasks)
                {
                    Diag.DebugPrint("Deleting Background Taks " + cur.Value.Name);
                    cur.Value.Unregister(true);
                }

                var myTaskBuilder = new BackgroundTaskBuilder();
                var myTrigger     = new SystemTrigger(SystemTriggerType.NetworkStateChange, false);
                myTaskBuilder.SetTrigger(myTrigger);
                myTaskBuilder.TaskEntryPoint = "Background.NetworkChangeTask";
                myTaskBuilder.Name           = "Network change task";
                var myTask = myTaskBuilder.Register();
            }
            catch (Exception exp)
            {
                Diag.DebugPrint("Exception caught while setting up system event" + exp.ToString());
            }
        }
Пример #5
0
        private void RegisterDebugSessionConnectedTask()
        {
            // This task runs every time the user logs in, which then invokes the same code as the preinstall task would. Used only for testing purposes.
            var trigger = new SystemTrigger(SystemTriggerType.SessionConnected, oneShot: false);

            BackgroundTasksHelper.RegisterBackgroundTask("EdgeToastBackgroundProject.PreinstallTask", "SessionConnectedTask", trigger, null);
        }
Пример #6
0
        /// <summary>
        /// Subscribe background task to inform no internet connection.
        /// </summary>
        /// <returns></returns>
        public static async Task RegisterTaskAsync()
        {
            string          taskName            = "NoInternet";
            SystemTrigger   internet            = new SystemTrigger(SystemTriggerType.NetworkStateChange, false);
            SystemCondition conditionNOInternet = new SystemCondition(SystemConditionType.InternetNotAvailable);

            string taskEntryPoint = typeof(BackgroundTaskApp.MyBackgroundTask).ToString();
            await BackgroundTaskHelper.RegisterBackgroundTaskAsync(taskEntryPoint, taskName, internet, conditionNOInternet);
        }
Пример #7
0
        public void Handle(RegisterTilesBackgroundTaskMessage message)
        {
            var trigger   = new SystemTrigger(SystemTriggerType.InternetAvailable, false);
            var condition = new SystemCondition(SystemConditionType.UserPresent);

            _backGrdTaskRegistrator.RegisterBackgroundTask(WordFinder.Common.BackgroundTasks.TilesBackgroundTaskEntryPoint,
                                                           WordFinder.Common.BackgroundTasks.TilesBackgroundTaskName,
                                                           trigger,
                                                           condition);
        }
Пример #8
0
        // Handle request to register the background task
        private async void RegisterBackgroundTask_Click(object sender, RoutedEventArgs e)
        {
            // SMS is a sensitive capability and the user may be prompted for consent. If the app
            // does not obtain permission for the package to have access to SMS before the background
            // work item is run (perhaps after the app is suspended or terminated), the background
            // work item will not have access to SMS and will have no way to prompt the user for consent
            // without an active window. Here, any available SMS device is activated in order to ensure
            // consent. Your app will likely do something with the SMS device as part of its features.
            if (!hasDeviceAccess)
            {
                try
                {
                    SmsDevice smsDevice = (SmsDevice)await SmsDevice.GetDefaultAsync();

                    rootPage.NotifyUser("Successfully connnected to SMS device with account number: " + smsDevice.AccountPhoneNumber, NotifyType.StatusMessage);
                    hasDeviceAccess = true;
                }
                catch (Exception ex)
                {
                    rootPage.NotifyUser("Failed to find SMS device\n" + ex.Message, NotifyType.ErrorMessage);
                    return;
                }
            }

            try
            {
                // Create a new background task builder.
                BackgroundTaskBuilder taskBuilder = new BackgroundTaskBuilder();

                // Create a new SmsReceived trigger.
                SystemTrigger trigger = new SystemTrigger(SystemTriggerType.SmsReceived, false);

                // Associate the SmsReceived trigger with the background task builder.
                taskBuilder.SetTrigger(trigger);

                // Specify the background task to run when the trigger fires.
                taskBuilder.TaskEntryPoint = BackgroundTaskEntryPoint;

                // Name the background task.
                taskBuilder.Name = BackgroundTaskName;

                // Register the background task.
                BackgroundTaskRegistration taskRegistration = taskBuilder.Register();

                // Associate completed event handler with the new background task.
                taskRegistration.Completed += new BackgroundTaskCompletedEventHandler(OnCompleted);

                UpdateBackgroundTaskUIState(true);
                rootPage.NotifyUser("Registered SMS background task", NotifyType.StatusMessage);
            }
            catch (Exception ex)
            {
                rootPage.NotifyUser(ex.ToString(), NotifyType.ErrorMessage);
            }
        }
Пример #9
0
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            BackgroundTaskBuilder builder = new BackgroundTaskBuilder();

            builder.Name           = "My Wifi Checker";
            builder.TaskEntryPoint = "MyBackgroundTask.Class1";
            SystemTrigger trigger = new SystemTrigger(SystemTriggerType.NetworkStateChange, false);

            builder.SetTrigger(trigger);
            var task = builder.Register();
        }
Пример #10
0
        private void btnRegisterStart_Click(object sender, RoutedEventArgs e)
        {
            AddTile();
            BackgroundTaskBuilder builder = new BackgroundTaskBuilder();

            builder.Name           = "Wifi Checking";
            builder.TaskEntryPoint = "BackgroundTaskInternet.BGTaskInterface";
            SystemTrigger trigger = new SystemTrigger(SystemTriggerType.NetworkStateChange, false);

            builder.SetTrigger(trigger);
            BackgroundTaskRegistration task = builder.Register();
        }
Пример #11
0
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);
            BackgroundTaskBuilder builder = new BackgroundTaskBuilder();

            builder.Name           = "Wifi Checking";
            builder.TaskEntryPoint = "BGInterface.NetInterface";
            SystemTrigger trigger = new SystemTrigger(SystemTriggerType.NetworkStateChange, false);

            builder.SetTrigger(trigger);
            var task = builder.Register();
        }
Пример #12
0
        private static async Task <bool> RegisterAllBackgroundTasksAsyncHelper(bool runAppTrigger)
        {
            // Check for background registration permissions.
            var status = await BackgroundExecutionManager.RequestAccessAsync();

            Debug.WriteLine("BackgroundExecutionManager.RequestAccessAsync returned status " + status);
            if (status == BackgroundAccessStatus.DeniedBySystemPolicy ||
                status == BackgroundAccessStatus.DeniedByUser)
            {
                Debug.WriteLine("Cannot register background tasks. TODO: Notify user?");
                return(false);
            }

            // TODO: Remove this after development
            //UnregisterAllBackgroundTasks();

            // Background task parameters.
            ApplicationTrigger appTrigger = new ApplicationTrigger();
            SystemTrigger      sessionConnectedTrigger = new SystemTrigger(SystemTriggerType.SessionConnected, false);
            SystemCondition    userPresentCondition    = new SystemCondition(SystemConditionType.UserPresent);
            SystemCondition    internetCondition       = new SystemCondition(SystemConditionType.InternetAvailable);

            /**
             * App store update task registration
             */

            // Trigger the task to run when the app launches.
            _ = RegisterBackgroundTask(
                CheckStoreUpdatesApp, CheckStoreUpdatesEntry,
                appTrigger,
                new[] { internetCondition }
                );
            // Trigger the task to run when the user logs in, i.e. startup, logon.
            _ = RegisterBackgroundTask(
                CheckStoreUpdatesSession, CheckStoreUpdatesEntry,
                sessionConnectedTrigger,
                new[] { userPresentCondition, internetCondition }
                );

            // Run background tasks that should start when the app is launched.
            if (runAppTrigger)
            {
                ApplicationTriggerResult result = await appTrigger.RequestAsync();

                Debug.WriteLine("ApplicationTrigger result is" + result);
            }

            return(true);
        }
Пример #13
0
        public async Task registerBackgroundTask()
        {
            await BackgroundExecutionManager.RequestAccessAsync();

            BackgroundTaskBuilder builder = new BackgroundTaskBuilder();

            builder.Name = "BackGroundTask";

            SystemTrigger trig = new SystemTrigger(SystemTriggerType.InternetAvailable, false);

            builder.SetTrigger(trig);
            builder.AddCondition(new SystemCondition(SystemConditionType.FreeNetworkAvailable));

            builder.TaskEntryPoint = typeof(BackGroundTask.Backgroud).FullName;

            BackgroundTaskRegistration register = builder.Register();
        }
Пример #14
0
        /// <summary>
        /// Registers the background network task.
        /// </summary>
        /// <returns>Regisred background task</returns>
        public async Task <BackgroundTaskRegistration> RegisterBackgroundTask()
        {
            BackgroundTaskRegistration taskRegistration = null;

            if (await hasAccessAsync())
            {
                var builder = new BackgroundTaskBuilder {
                    Name = TaskName, TaskEntryPoint = typeof(NetworkBackgroundTask).FullName
                };
                var trigger = new SystemTrigger(SystemTriggerType.NetworkStateChange, false);
                builder.SetTrigger(trigger);

                taskRegistration = builder.Register();
            }

            return(taskRegistration);
        }
Пример #15
0
        public static async Task RegisterBackgroundTasksAsync()
        {
            //BGUpdater
            string          name              = "KomunikatyRSOUWPBackgroundSettingsUpdater";
            string          entryPoint        = "BGUpdater.BackgroundSettingsUpdater";
            TimeTrigger     timeTrigger       = new TimeTrigger(3 * 60, false);
            SystemTrigger   st                = new SystemTrigger(SystemTriggerType.InternetAvailable, false);
            SystemCondition internetCondition = new SystemCondition(SystemConditionType.InternetAvailable);

            try
            {
                await RegisterBackgroundTaskAsync(entryPoint, name, timeTrigger, internetCondition);
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine("Background task registration error: {0}", ex);
            }
        }
Пример #16
0
        async Task RegisterTask()
        {
            // Rumour of a bug which means you have to call this before calling Request...
            BackgroundExecutionManager.RemoveAccess();

            await BackgroundExecutionManager.RequestAccessAsync();

            BackgroundTaskBuilder taskBuilder = new BackgroundTaskBuilder();

            taskBuilder.Name = "MyBackgroundTask";
            SystemTrigger trigger = new SystemTrigger(SystemTriggerType.TimeZoneChange, false);

            taskBuilder.SetTrigger(trigger);
            taskBuilder.TaskEntryPoint = typeof(MyBackgroundTask.TheTask).FullName;
            taskBuilder.Register();

            this.GetTask();
        }
Пример #17
0
        void RegisterNetworkChangeTask()
        {
            try
            {
                UnregisterBackgroundTasks();

                var builder = new BackgroundTaskBuilder();
                var trigger = new SystemTrigger(SystemTriggerType.NetworkStateChange, false);
                builder.SetTrigger(trigger);
                builder.TaskEntryPoint = "NotificationManager.Tasks.NetworkChangeTask";
                builder.Name           = "NetworkChangeTask";
                var task = builder.Register();
            }
            catch (Exception ex)
            {
                Diag.DebugPrint("Exception caught while setting up system event " + ex.ToString());
            }
        }
        private async Task RegisterBackgroundTasksAsync()
        {
            await BackgroundExecutionManager.RequestAccessAsync();

            var entryPoint = "BackgroundTask.TestBackgroundTask";
            var condition  = new SystemCondition(SystemConditionType.InternetAvailable);

            // check with SYSTEM trigger (when internet available)
            var internetAvailableTrigger = new SystemTrigger(SystemTriggerType.InternetAvailable, false);

            RegisterBackgroundTask(entryPoint, "TestBackgroundTask", internetAvailableTrigger, null);

            // check with Maintenance trigger (when internet available)
            var maintenanceTriggerPeriod = TimeSpan.FromDays(1);
            var timeTrigger = new MaintenanceTrigger((uint)maintenanceTriggerPeriod.TotalMinutes, false);

            RegisterBackgroundTask(entryPoint, "TestBackgroundTask", timeTrigger, condition);
        }
Пример #19
0
        /// <summary>
        /// 屏幕点亮时执行该任务
        /// </summary>
        private void RegisterUpdateTopStoriesBackgroundTask()
        {
            string Task_NAME = "Update Task";
            var    taskReg   = BackgroundTaskRegistration.AllTasks.Values.FirstOrDefault(t => t.Name == Task_NAME) as BackgroundTaskRegistration;

            if (taskReg != null)
            {
                return;
            }

            var task = new BackgroundTaskBuilder
            {
                Name           = Task_NAME,
                TaskEntryPoint = typeof(ZhiHuDaily.UWP.Background.UpdateTopStoriesBackgroundExecution).FullName
            };

            var trigger = new SystemTrigger(SystemTriggerType.UserPresent, false);

            task.SetTrigger(trigger);
            var r = task.Register();
        }
Пример #20
0
        /// <summary>
        /// Register the background task.
        /// </summary>
        /// <returns>True if we were able to register the background task.</returns>
        private async Task <bool> RegisterTask()
        {
            if (GetTaskRegistration())
            {
                return(true);
            }

            var access = await BackgroundExecutionManager.RequestAccessAsync().AsTask();

            if (access != BackgroundAccessStatus.AllowedMayUseActiveRealTimeConnectivity)
            {
                return(false);
            }

            if (_timerRegistration == null)
            {
                var taskBuilder = new BackgroundTaskBuilder {
                    Name = Common.TimerTaskName
                };
                var trigger = new TimeTrigger(60, false);

                taskBuilder.SetTrigger(trigger);
                taskBuilder.TaskEntryPoint = typeof(DevicePowerTask.DevicePowerTimerBandTask).FullName;
                taskBuilder.Register();
            }

            if (_systemRegistration == null)
            {
                var taskBuilder = new BackgroundTaskBuilder {
                    Name = Common.SystemTaskName
                };
                var trigger = new SystemTrigger(SystemTriggerType.PowerStateChange, false);

                taskBuilder.SetTrigger(trigger);
                taskBuilder.TaskEntryPoint = typeof(DevicePowerTask.DevicePowerSystemBandTask).FullName;
                taskBuilder.Register();
            }

            return(GetTaskRegistration());
        }
Пример #21
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            RefreshData();

            const string name = "MyExampleTrigger";

            if (BackgroundTaskRegistration.AllTasks.Any(task => task.Value.Name == name))
            {
                // One register it once
                return;
            }

            var builder = new BackgroundTaskBuilder();
            var trigger = new SystemTrigger(SystemTriggerType.TimeZoneChange, false);

            builder.Name           = name;
            builder.TaskEntryPoint = typeof(Bg).FullName;
            builder.SetTrigger(trigger);

            var registration = builder.Register();

            registration.Completed += registration_Completed;
        }
Пример #22
0
        private async void RegisterTask()
        {
            var result = await BackgroundExecutionManager.RequestAccessAsync();

            if (result == BackgroundAccessStatus.Denied)
            {
                // Handle this if it is importet for your app.
            }

            var taskBuilder = new BackgroundTaskBuilder {
                Name = "MyBackgroundTask"
            };
            var trigger = new SystemTrigger(SystemTriggerType.TimeZoneChange, false);

            taskBuilder.SetTrigger(trigger);
            taskBuilder.TaskEntryPoint = typeof(MyBackgroundTask).FullName;
            //taskBuilder.Register();
            var registration = taskBuilder.Register();

            registration.Completed += (sender, args) => {
                // Handle this if it is importet for your app.
            };
            GetTask();
        }
Пример #23
0
        private async Task RegisterBackgroundTaskAsync()
        {
            try
            {
                switch (await BackgroundExecutionManager.RequestAccessAsync())
                {
                case BackgroundAccessStatus.AllowedSubjectToSystemPolicy:
                case BackgroundAccessStatus.AlwaysAllowed:
                {
                    if (BackgroundTaskRegistration.AllTasks.Select((item) => item.Value).FirstOrDefault((task) => task.Name == "UpdateTask") is IBackgroundTaskRegistration Registration)
                    {
                        Registration.Unregister(true);
                    }

                    SystemTrigger         Trigger = new SystemTrigger(SystemTriggerType.SessionConnected, false);
                    BackgroundTaskBuilder Builder = new BackgroundTaskBuilder
                    {
                        Name = "UpdateTask",
                        IsNetworkRequested = true,
                        TaskEntryPoint     = "UpdateCheckBackgroundTask.UpdateCheck"
                    };
                    Builder.SetTrigger(Trigger);
                    Builder.AddCondition(new SystemCondition(SystemConditionType.InternetAvailable));
                    Builder.AddCondition(new SystemCondition(SystemConditionType.UserPresent));
                    Builder.AddCondition(new SystemCondition(SystemConditionType.FreeNetworkAvailable));
                    Builder.Register();

                    break;
                }

                default:
                {
                    if (!ApplicationData.Current.LocalSettings.Values.ContainsKey("DisableBackgroundTaskTips"))
                    {
                        QueueContentDialog Dialog = new QueueContentDialog
                        {
                            Title               = Globalization.GetString("Common_Dialog_TipTitle"),
                            Content             = Globalization.GetString("QueueDialog_BackgroundTaskDisable_Content"),
                            PrimaryButtonText   = Globalization.GetString("QueueDialog_BackgroundTaskDisable_PrimaryButton"),
                            SecondaryButtonText = Globalization.GetString("QueueDialog_BackgroundTaskDisable_SecondaryButton"),
                            CloseButtonText     = Globalization.GetString("QueueDialog_BackgroundTaskDisable_CloseButton")
                        };

                        switch (await Dialog.ShowAsync().ConfigureAwait(true))
                        {
                        case ContentDialogResult.Primary:
                        {
                            _ = await Launcher.LaunchUriAsync(new Uri("ms-settings:privacy-backgroundapps"));

                            break;
                        }

                        case ContentDialogResult.Secondary:
                        {
                            break;
                        }

                        default:
                        {
                            ApplicationData.Current.LocalSettings.Values["DisableBackgroundTaskTips"] = true;
                            break;
                        }
                        }
                    }

                    break;
                }
                }
            }
            catch (Exception e)
            {
                Debug.WriteLine($"Error happened in RegisterBackgroundTaskAsync, Message: {e.Message}");
            }
        }
Пример #24
0
 public BackgroundHelper()
 {
     //this.applicationTrigger = new ApplicationTrigger();   // TODO: Delete after testing
     this.networkStateChangeTrigger = new SystemTrigger(SystemTriggerType.NetworkStateChange, false);
     this.RegisteringBackgroundSpeedTest();
 }