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); } } }
public CASTSConnectorDouble(IDealingServerForASTSConnector dealingServer) : base(dealingServer) { _queueTransactions = new CBlockingQueue <Action>(); CUtil.ThreadStart(ProcessMainThread); CUtil.ThreadStart(ProcessDataThread); }