Tengo una tarea que debo cancelar si se agota el tiempo de espera. Por ejemploCancelar una tarea
var t = Task.Factory.StartNew(() =>
{
Thread.Sleep(5000) // some long running task
"do something"
});
Task.WaitAll(new[] {t}, 1000);
Pero parece que la tarea aún sigue funcionando. Traté de usar CancellationTokenSource, pero eso tampoco parecía funcionar.
me confirmó esto utilizando el siguiente fragmento de
static void Main(string[] args)
{
var cancellationTokenSource = new CancellationTokenSource();
var t = Task.Factory.StartNew(() => {
Thread.Sleep(5000);
Console.WriteLine("Still working");
}, cancellationTokenSource.Token);
Task.WaitAll(new[] {t}, 1000);
cancellationTokenSource.Cancel();
Console.ReadLine();
}
La consola despliega "Todavía trabajo". Pensé que la tarea habría sido cancelada.
Estoy seguro de que me falta algo. ¿Qué me estoy perdiendo? Gracias.