пятница, 11 мая 2018 г.

Cardinal Changes in EventLog, TradeContext with ProcessTask

1. Cardinal Changes in Eventlog.
From Threads to ProcessTask<TInput>

EventLogs.cs 

 public interface IEventLogs : IEventLog, IHaveQueue<IEventLogItem>
    {
        void Start();
        void Stop();
    }

private void SetupProcessTask()
        {
            ProcessTask = new ProcessTask<IEventLogItem>();
            ProcessTask.Init(this);
            ProcessTask.Parent = this;
            ProcessTask.ItemProcessingAction = evli =>
            {
                try
                {
                    AddItem(evli);
                }
                catch (Exception e)
                {
                    Evlm2(EvlResult.FATAL, EvlSubject.PROGRAMMING,
                        GetType().Name, "ProcessTask", "Exception", e.Message);
                }
            };
        }

public void Start()
        {
            ProcessTask?.Start();
        }
        public void Stop()
        {

            ProcessTask?.Stop();

        }

EventLogs.Init()
{
...
...

 SetupProcessTask();

}

TradeContext5.cs

 // 2018.05.11 new EventLog with Processor Inside ProcessTask<IEvlItem>              

((IEventLogs)EventLog)?.Start();


TradeContext51.cs   // Good Buy Threads

 // 2018.05.11 
                // UIProcess.RegisterProcess("EventLog Dequeue Process", "EventLog.DeQueue",

                //    1000, 0, null, ((IEventLogs) EventLog).DeQueueProcess, null);

WpfTradeContext CloseWindow:

EventHandlers.cs

 private void WindowClosed(object sender, EventArgs e)
        {
            _tx.Stop();
            //Thread.Sleep(5000);
            
            _tx.Close();

            ((IEventLogs)_evl)?.Stop();

        }





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

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