Exemplo n.º 1
0
        private static void SchedulerThreadTick()
        {
            while (true)
            {
                foreach (SchedulerItem schedulerItem in ScheduledItems.ToArray())
                {
                    if (schedulerItem.LastRan <= DateTime.UtcNow - schedulerItem.Delay)
                    {
                        schedulerItem.DoRun();
                        if (!schedulerItem.Loop)
                        {
                            ScheduledItems.Remove(schedulerItem);
                        }
                    }
                }

                Thread.Sleep(15000);
            }
        }
Exemplo n.º 2
0
            void IUpdateable.Update()
            {
                isInScriptContext = true;

                lock (SchedulerLock)
                {
                    ScheduledItems.RemoveWhere(item =>
                    {
                        if (!item.CompletionSource())
                        {
                            return(false);
                        }

                        item.TaskCompletionSource.SetResult(true);
                        return(true);
                    });
                }

                isInScriptContext = false;
            }
Exemplo n.º 3
0
 public IDisposable Schedule <TState>(TState state, Func <IScheduler, TState, IDisposable> action)
 {
     ScheduledItems.Add(new Tuple <Action, TimeSpan?>(null, null));
     return(InnerScheduler.Schedule(state, action));
 }
Exemplo n.º 4
0
 public IDisposable Schedule <TState>(TState state, TimeSpan dueTime, Func <IScheduler, TState, IDisposable> action)
 {
     ScheduledItems.Add(new Tuple <Action, TimeSpan?>(() => action(this, state), dueTime));
     return(InnerScheduler.Schedule(state, dueTime, action));
 }