Beispiel #1
0
        private void RunPendingEvents()
        {
            while (_pendingEvents.Count > 0)
            {
                IUXEvent nextEventToRun = _pendingEvents[0];
                if (nextEventToRun.CanRun(_runningEvents))
                {
                    // Move event from pending to running
                    _pendingEvents.RemoveAt(0);
                    _runningEvents.Add(nextEventToRun);

                    // Subscribe to completion event
                    nextEventToRun.Completed += UXEvent_OnCompleted;

                    // Fire off our own event
                    EventCommenced?.Invoke(nextEventToRun);

                    // Run event
                    nextEventToRun.Run();

                    continue;
                }

                break;
            }
        }
Beispiel #2
0
        private void UXEvent_OnCompleted(IUXEvent uxEvent)
        {
            // Remove from currently running list
            _runningEvents.Remove(uxEvent);

            // Unsubscribe from event
            uxEvent.Completed -= UXEvent_OnCompleted;

            // Fire off our own event
            EventCompleted?.Invoke(uxEvent);
        }
Beispiel #3
0
        public void AddEvent(IUXEvent uxEvent)
        {
            if (uxEvent != null)
            {
                // Add event to our pending queue
                _pendingEvents.Add(uxEvent);

                // Fire off our own event
                EventEnqueued?.Invoke(uxEvent);
            }
        }