Правильный способ отложить запуск задачи

Я хочу запланировать запуск задачи через x мс и иметь возможность отменить ее до ее запуска (или только в начале задачи).

Первая попытка будет примерно такой же, как

var _cancelationTokenSource = new CancellationTokenSource();

var token = _cancelationTokenSource.Token;
Task.Factory.StartNew(() =>
    {
        token.ThrowIfCancellationRequested();
        Thread.Sleep(100);
        token.ThrowIfCancellationRequested();
    }).ContinueWith(t =>
    {
        token.ThrowIfCancellationRequested();
        DoWork();
        token.ThrowIfCancellationRequested();
    }, token);

. Но я чувствую, что должен быть способ получше, так как при этом поток будет израсходован во время сна, во время которого его можно будет отменить.

Какие у меня другие варианты?

53
задан Default 11 March 2013 в 05:07
поделиться