Qual é a utilidade de passar o CancellationToken ao construtor da Classe de Tarefa?

Aqui está um código de exemplo que cria uma nova tarefa que simula um processo de execução demorada. Não há muita coisa na tarefa e se concentra exclusivamente nos recursos de cancelamento. Estou usando o token de cancelamento para cancelar a tarefa e o código funciona bem para mim. .

       CancellationTokenSource CTS= new CancellationTokenSource();

       Task<Boolean> PTask = new Task<Boolean>(() => 
       {
           while (true)
           {
               if (!CTS.Token.IsCancellationRequested)
               {
                  Thread.Sleep(5000);
               }
               else{Console.WriteLine("Thread Cancelled");break;}
           }
           return true;

       }, CTS.Token, TaskCreationOptions.None);

       PTask.Start();
       Console.WriteLine("Hit Enter to cancel the Secondary thread you have started");
       Console.ReadLine();
       CTS.Cancel();
       System.Console.WriteLine(PTask.Result);

    }
}

Mas onething que eu não pude entender é o parâmetro de token (CTS.Token) que está sendo passado para o Construtor de Tarefa.Qual é o uso real de passar o parâmetro, quando eu posso realmente cancelar a tarefa mesmo sem passar o token para o construtor .

Abaixo está uma versão ligeiramente modificada que funciona sem o parâmetro token.

      CancellationTokenSource CTS= new CancellationTokenSource();
      Task<Boolean> PTask = new Task<Boolean>(() => 
       {
           while (true)
           {
               if (!CTS.Token.IsCancellationRequested)
               {
                   Thread.Sleep(5000);
               }
               else
               {
                   Console.WriteLine("Thread Cancelled");
                   break;
               }
       };

questionAnswers(1)

yourAnswerToTheQuestion