Cancelando uma Tarefa

Tenho uma tarefa que preciso cancelar se o tempo de espera terminar. Por exemplo

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

Mas parece que a tarefa ainda continua funcionando. Eu tentei usar CancellationTokenSource, mas isso não parecia funcionar também.

Confirmei isso usando o seguinte trecho

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

O console exibe "Ainda funcionando". Eu pensei que a tarefa teria sido cancelada.

Tenho certeza de que estou perdendo alguma coisa. O que estou perdendo? Obrigado.

questionAnswers(1)

yourAnswerToTheQuestion