Я хочу запланировать запуск задачи через 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);
. Но я чувствую, что должен быть способ получше, так как при этом поток будет израсходован во время сна, во время которого его можно будет отменить.
Какие у меня другие варианты?