延迟一个 Task 的执行

问题

我想实现一个可以在延迟 Xms 后执行一个 task 的需求,并要求能够实现在 xms 之前取消 task 的执行,我的参考代码如下:

  1. var _cancelationTokenSource = new CancellationTokenSource();
  2. var token = _cancelationTokenSource.Token;
  3. Task.Factory.StartNew(() =>
  4. {
  5. token.ThrowIfCancellationRequested();
  6. Thread.Sleep(100);
  7. token.ThrowIfCancellationRequested();
  8. }).ContinueWith(t =>
  9. {
  10. token.ThrowIfCancellationRequested();
  11. DoWork();
  12. token.ThrowIfCancellationRequested();
  13. }, token);
  • 虽然用 Sleep + ContinueWith 的方式可以实现,但我觉得还不够完美,请问是否有更好的办法?