Пример #1
0
        private void EventWorker()
        {
            Action EventNotifier = null;

            ToDeviceCallback[] EventListCopy = new ToDeviceCallback[255];
            int EventCount;
            int TimeSlice;

            EventNotifier = delegate {
                EventCount = RegularEventList.Count;
                RegularEventList.CopyTo(EventListCopy);
                if (EventCount > 0)
                {
                    TimeSlice = Config.RefreshRate / EventCount;
                    for (int i = EventCount; i >= 0; --i)
                    {
                        if (EventListCopy[i] != null)
                        {
                            EventListCopy[i]();
                            Thread.Sleep(TimeSlice);
                        }
                    }
                }
                else
                {
                    Thread.Sleep(Config.RefreshRate);
                }
            };
            DoEventDispatching = true;
            Debug.Log("KerbalSimpit: Starting event dispatch loop");
            while (DoEventDispatching)
            {
                EventNotifier();
            }
            Debug.Log("KerbalSimpit: Event dispatch loop exiting");
        }
Пример #2
0
 public static bool RemoveToDeviceHandler(ToDeviceCallback cb)
 {
     return(RegularEventList.Remove(cb));
 }
Пример #3
0
 public static void AddToDeviceHandler(ToDeviceCallback cb)
 {
     RegularEventList.Add(cb);
 }