如果Token.WaitHandle.WaitOne方法调用阻止了该线程,则我们无法对该线程执行任何操作。那我们怎么用它取消呢?

var cts = new CancellationTokenSource();
var token = cts.Token;
Task.Run(() => {
  while(true){
    //Doing something in the loop
    token.WaitHandle.WaitOne(); // Method 1
    token.ThrowIfCancellationRequested(); // Method 2
  }
}, token);

在这两种取消任务的方法中,方法2是我所了解的。但是,方法1在我的理解中提出了一个问题,因为我读到的是它阻止了执行。如果是阻塞调用,则意味着我们的代码未执行。那么这怎么可能是取消的方法呢?要取消均值,将取消正在运行的任务,在这种情况下,如我们在等待时,该任务尚未执行我们的代码。