public override IDisposable ScheduleDirect(IRunnable run, TimeSpan delay) { ScheduledRunnable sr = new ScheduledRunnable(run, null); IDisposable d = Task.Delay(delay).ContinueWith(t => sr.Run()); sr.SetFuture(d); return sr; }
public override IDisposable ScheduleDirect(IRunnable run) { ScheduledRunnable sr = new ScheduledRunnable(run, null); IDisposable d = Task.Run(() => sr.Run()); sr.SetFuture(d); return sr; }
public override IDisposable Schedule(IRunnable action) { ScheduledRunnable sr = new ScheduledRunnable(action, set); set.Add(sr); queue.Enqueue(sr); if (Interlocked.Increment(ref wip) == 1) { Task.Run(() => drain()); } return sr; }