Cancelar una tarea

Tengo una tarea que necesito cancelar si el tiempo de espera ha terminado. Por ejempl

var t = Task.Factory.StartNew(() => 
{
  Thread.Sleep(5000) // some long running task
  "do something"
});
Task.WaitAll(new[] {t}, 1000);

Pero parece que la tarea sigue funcionando. Intenté usar CancellationTokenSource pero eso no pareció funcionar tan bien.

Confirmé esto usando el siguiente fragmento

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();
        }

Console muestra "Aún trabajando". Pensé que la tarea habría sido cancelada.

Estoy seguro de que me falta algo. ¿Qué me estoy perdiendo? Gracias

Respuestas a la pregunta(1)

Su respuesta a la pregunta