Par rapport au code précédent pour la classe RulyCanceler , je voulais exécuter du code en utilisant   CancellationTokenSource.
Comment puis-je l'utiliser comme mentionné dans les jetons d'annulation , c'est-à-dire sans lancer / attraper une exception? Puis-je utiliser la IsCancellationRequestedpropriété?  
J'ai essayé de l'utiliser comme ceci:
cancelToken.ThrowIfCancellationRequested();et
try
{
  new Thread(() => Work(cancelSource.Token)).Start();
}
catch (OperationCanceledException)
{
  Console.WriteLine("Canceled!");
}
mais cela a donné une erreur d'exécution sur la cancelToken.ThrowIfCancellationRequested();méthode Work(CancellationToken cancelToken):  
System.OperationCanceledException was unhandled
  Message=The operation was canceled.
  Source=mscorlib
  StackTrace:
       at System.Threading.CancellationToken.ThrowIfCancellationRequested()
       at _7CancellationTokens.Token.Work(CancellationToken cancelToken) in C:\xxx\Token.cs:line 33
       at _7CancellationTokens.Token.<>c__DisplayClass1.<Main>b__0() in C:\xxx\Token.cs:line 22
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException:
Le code que j'ai exécuté avec succès a attrapé l'exception OperationCanceledException dans le nouveau thread:
using System;
using System.Threading;
namespace _7CancellationTokens
{
  internal class Token
  {
    private static void Main()
    {
      var cancelSource = new CancellationTokenSource();
      new Thread(() =>
      {
         try
         {
           Work(cancelSource.Token); //).Start();
         }
         catch (OperationCanceledException)
         {
            Console.WriteLine("Canceled!");
         }
         }).Start();
      Thread.Sleep(1000);
      cancelSource.Cancel(); // Safely cancel worker.
      Console.ReadLine();
    }
    private static void Work(CancellationToken cancelToken)
    {
      while (true)
      {
        Console.Write("345");
        cancelToken.ThrowIfCancellationRequested();
      }
    }
  }
}
CancellationTokenSourceavec des méthodes asynchrones, des méthodes de longue durée avec interrogation et l'utilisation d'un rappel.