public void Schedule(Action action, TimeSpan span)
{
Task.Factory
.StartNew(() => _source.Token.WaitHandle.WaitOne(span))
.ContinueWith(t => action(), _source.Token,
TaskContinuationOptions.OnlyOnRanToCompletion,
TaskScheduler.FromCurrentSynchronizationContext());
}