Qu'est-ce que l'utilisation de la transmission CancellationToken à la Tâche constructeur de la Classe?

Voici un exemple de code qui crée une nouvelle tâche qui simule un long processus en cours d'exécution.Il n'y a rien beaucoup sur la tâche en tant que telle et purement met l'accent sur l'annulation de fonctionnalités.Je suis à l'aide jeton d'annulation pour annuler la tâche et le code fonctionne très bien pour moi.

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

    }
}

Mais onething que je ne pouvais pas comprendre, c'est le paramètre du jeton(CTS.Jeton) qui est passé sur la Tâche Constructeur.Qu'est-ce que l'utilisation réelle de la transmission du paramètre,quand je peux effectivement annuler la tâche, même sans passage de jeton pour le constructeur.

Vers le bas ci-dessous est une version légèrement modifiée qui fonctionne sans le paramètre jeton.

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