try{
      var cts = new CancellationTokenSource();
      CancellationToken ct = cts.Token;
      Task.Run(()=>
      {
          //DoSomething(); excute long time   
      }, ct);
      Task.Run(()=>
      {
          Thread.Sleep(1000);
          cts.Cancel();
      }, ct).Wait();
}
catch (OperationCanceledException ex)
{
      Console.WriteLine("exception" + ex.Message);
}
finally
{
      Console.WriteLine("finally");
}
When I call cts.Cancel() 
DoSomething still Work.....................
how can i stop first Task?
if DoSomething Has a loop
I can add ct.ThrowIfCancellationRequested() , it's working
but DoSomething not a loop , what can i do ?
 
    