public IDisposable Schedule(TimeSpan dueTime, Action action) { var wait = Scheduler.Normalize(dueTime); var d = new BooleanDisposable(); #if NETFX_CORE Task.Run(() => { if (!d.IsDisposed) { if (wait.Ticks > 0) { Thread.Sleep(wait); } action(); } }); #else Action act = () => { if (!d.IsDisposed) { if (wait.Ticks > 0) { Thread.Sleep(wait); } action(); } }; act.BeginInvoke(ar => act.EndInvoke(ar), null); #endif return(d); }