Exemplo n.º 1
0
        /// <summary>
        ///     Initialize Requirement
        ///     Set timer
        /// </summary>
        /// <param name="addNewSchedule">Specify add new Schedule</param>

        #region Initialize

        private void Initialize(bool addNewSchedule)
        {
            if (addNewSchedule)
            {
                // Set Identity
                _ScheduleItem          = new G9ScheduleItem.G9ScheduleItem();
                _ScheduleItem.Identity = ScheduleIdentity = Guid.NewGuid();

                // Add schedule
                SaveScheduleTask.Add(ScheduleIdentity, _ScheduleItem);
            }

            if (!_activeSchedule)
            {
                _activeSchedule = true;
                Task.Run(async() =>
                {
                    while (true)
                    {
                        // Check Schedule handler method finished or no
                        if (_waitForFinishScheduleHandler)
                        {
                            // if not finished Delay and check again
                            await Task.Delay(1);
                        }
                        else
                        {
                            // if finished run Schedule handler again and wait
                            await ScheduleHandler();
                            await Task.Delay(1);
                        }
                    }
                });
            }
        }
Exemplo n.º 2
0
        /// <summary>
        ///     Remove Schedule item from category
        ///     Helper method
        /// </summary>
        /// <param name="g9ScheduledItem">Specify Schedule item</param>

        #region removeScheduleItem

        private static void removeScheduleItem(KeyValuePair <Guid, G9ScheduleItem.G9ScheduleItem> g9ScheduledItem)
        {
            // remove from schedule
            try
            {
                // Run all finish call back
                foreach (var actions in g9ScheduledItem.Value.FinishCallBack)
                {
                    actions?.Invoke();
                }
            }
            catch (Exception ex)
            {
                foreach (var action in g9ScheduledItem.Value.ErrorCallBack)
                {
                    action?.Invoke(ex);
                }
            }
            finally
            {
                try
                {
                    // Remove
                    SaveScheduleTask.Remove(g9ScheduledItem.Key);
                }
                catch
                {
                    // Ignore
                }
            }
        }
Exemplo n.º 3
0
        /// <summary>
        ///     Constructor - Restore Schedule by identity
        ///     Initialize Requirement
        /// </summary>
        /// <param name="ScheduleIdentity">Specify Schedule identity for restore enable Schedule</param>

        #region G9Scheduled

        public G9Schedule(Guid ScheduleIdentity)
        {
            if (!SaveScheduleTask.ContainsKey(ScheduleIdentity))
            {
                throw new Exception("Schedule not found!");
            }

            _ScheduleItem         = SaveScheduleTask[ScheduleIdentity];
            this.ScheduleIdentity = ScheduleIdentity;

            Initialize(false);
        }
Exemplo n.º 4
0
        /// <summary>
        ///     Dispose this Schedule
        /// </summary>

        #region Dispose

        public void Dispose()
        {
            if (SaveScheduleTask[ScheduleIdentity].DisposeCallBack == null)
            {
                SaveScheduleTask[ScheduleIdentity].DisposeCallBack = new HashSet <Action>();
            }
            foreach (var action in SaveScheduleTask[ScheduleIdentity].DisposeCallBack)
            {
                action?.Invoke();
            }
            SaveScheduleTask.Remove(ScheduleIdentity);

            ScheduleIdentity = Guid.Empty;
            _ScheduleItem    = null;
        }