Quiero programar una tarea para que se inicie en x ms y poder cancelarla antes de que comience (o solo al comienzo de la tarea).Forma correcta de retrasar el inicio de una Tarea
El primer intento sería algo así como
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);
pero siento que debe haber una mejor manera, ya que esto sería utilizar un hilo, mientras que en el sueño, durante el cual podría ser cancelada.
¿Cuáles son mis otras opciones?
Su realmente no Mush gastos generales y se lee muy bien (por lo que es mantenible). –
@Richard No es raro despedir unos cientos de tareas. Y este código no lo tratará bien. – CodesInChaos
Probablemente sea mejor con un [temporizador] (http://msdn.microsoft.com/en-us/library/system.timers.timer.aspx). – Massif