Beispiel #1
0
        //гарантируется что arr имеет хотя бы 1 элемент
        private EventComponent getMinEvent(List <EventComponent> arr)
        {
            if (arr.Count == 0)
            {
                return(null);
            }
            EventComponent minEvent = arr[0];

            for (int i = 1; i < arr.Count(); i++)
            {
                if (arr[i].GetTime() < minEvent.GetTime())
                {
                    minEvent = arr[i];
                }
            }
            return(minEvent);
        }
Beispiel #2
0
        public void ClosestEvent(List <EventComponent> oClosestEvents, List <int> oClosestQueueIndices)
        {
            oClosestEvents.Clear();
            oClosestQueueIndices.Clear();
            semaphore.WaitOne();
            EventComponent closestEvent = null;

            //находим ближайший по времени ивент
            closestEvent = getMinEvent(eventQueue);

            if (closestEvent != null)
            {
                //добавляем ивенты с временен как у ближайшего
                for (int i = 0; i < eventQueue.Count; i++)
                {
                    if (eventQueue[i].GetTime() == closestEvent.GetTime())
                    {
                        oClosestEvents.Add(eventQueue[i]);
                        oClosestQueueIndices.Add(i);
                    }
                }
            }
            semaphore.Release();
        }