예제 #1
0
        private void ProcessBlockingQueue(string threadName, ref CBlockingQueue <Action> blockingQueue, int countLimit, bool bOutAlarm, int secRepeatAlarm = 20)
        {
            DateTime lastAlarm = new DateTime(0);

            while (true)
            {
                Action act = blockingQueue.GetElementBlocking();



                if (blockingQueue.Count > countLimit)
                {
                    if ((DateTime.Now - lastAlarm).TotalSeconds > secRepeatAlarm && bOutAlarm)
                    {
                        //2018-04-15 removed to make cleaner alarm list/file
                        //Error(threadName+ "quee more than max skip messages. Count="+blockingQueue.Count);
                        lastAlarm = DateTime.Now;
                    }
                }
                else
                if (GUIDispatcher != null)
                {
                    GUIDispatcher.BeginInvoke(act);
                }
            }
        }
예제 #2
0
        public CASTSConnectorDouble(IDealingServerForASTSConnector dealingServer)
            : base(dealingServer)
        {
            _queueTransactions = new CBlockingQueue <Action>();

            CUtil.ThreadStart(ProcessMainThread);
            CUtil.ThreadStart(ProcessDataThread);
        }