Je veux planifier une tâche pour commencer dans x ms et pouvoir l'annuler avant qu'elle ne commence (ou juste au début de la tâche).
La première tentative serait quelque chose comme
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);
Mais j’ai le sentiment qu’il devrait exister un meilleur moyen, car cela utiliserait un fil pendant le sommeil, pendant lequel il pourrait être annulé.
Quelles sont mes autres options?