воскресенье, 20 мая 2018 г.

EventLogWindow3 with ProcessTask

new EventLogWindow3 with ProcessTask Instead EventLogWindow2

EventLogWindow2:
EventLog->Window.Callback->DispatcherTread->item(evli)->ObserveCollection everyone evli

EventLogWindow3:
EventLog->Window.Callback->ProcessTask.Queue.Push->Delay(1000ms)->
ProcessTask.ITEMS.Processing->DispatcherTread->ITEMS(IEnumerable<evli>)->ObserveCollection

ProcessTask SetUp

public bool IsProcessTaskInUse { get; set; }
        private void SetupProcessTask()
        {
            if (!IsProcessTaskInUse)
            {
                EventLog.Evlm2(EvlResult.WARNING, EvlSubject.TECHNOLOGY, Name, Name,
                MethodBase.GetCurrentMethod().Name, "ProcessTask Will NOT BE USED",
                ToString());
                return;
            }
            ProcessTask = new ProcessTask<IEventLogItem>();
            ProcessTask.Init(EventLog);
            // ProcessTask.Parent = this;
            ProcessTask.TimeInterval = 1000;
            ProcessTask.IsEveryItemPushProcessing = false;
            ProcessTask.ItemsProcessingAction = InsertItemsIntoObserveCollection;

            EventLog.Evlm2(EvlResult.SUCCESS, EvlSubject.TECHNOLOGY, Name, Name,
                MethodBase.GetCurrentMethod().Name, "ProcessTask IS USED NOW",
                ProcessTask?.ToString());
        }
        [XmlIgnore]
        public GS.ProcessTasks.ProcessTask<IEventLogItem> ProcessTask { get; private set; }
        public void Start()
        {
            if (IsProcessTaskInUse)
                ProcessTask?.Start();
        }
        public void Stop()
        {
            if (IsProcessTaskInUse)
                ProcessTask?.Stop();
        }

ProcessTask.ItemsHandler:

private void InsertItemsIntoObserveCollection(IEnumerable<IEventLogItem> evlis)
        {
            Dispatcher.BeginInvoke((ThreadStart)(() =>
            {
                foreach (var evli in evlis)
                    EventLogItems.Insert(0, evli);

                if (Capasity != 0 && CapasityLimit + Capasity <= EventLogItems.Count)
                    ClearSomeData(Capasity);
            }
            ));

        }


Комментариев нет:

Отправить комментарий