.NET 根据条件使用 CancellationToken 关闭任务

.NET Close Task with CancellationToken upon condition

如何使用 CancellationToken 正确创建任务并根据条件关闭任务?

例如:

CancellationToken CancellationToken = new CancellationTokenSource();

Task.Run(() => {
  try{
    // Get some data from APIs...
    GetDataFromApi();
  }
  catch(Exception ex)
  {
    // So here I want to cancel this task and I do not want any continuation Tasks to run
  }
}, CancellationToken.Token);

我是否需要检查 CancellationToken 是否已取消或我该如何正确执行此操作?

谢谢

从技术上讲,将任务设置为 Canceled 状态的方法是抛出 OperationCanceledException 并传递与任务关联的取消令牌(通常通过调用 CancellationToken.ThrowIfCancellationRequested() 方法)。但这需要token的IsCancellationRequestedtrue。所以实现你想要的效果的一种方法是先取消,然后调用 ThrowIfCancellationRequested():

var cts = new CancellationTokenSource();

Task.Run(() => {
    try
    {
        // Get some data from APIs...
        GetDataFromApi();
    }
    catch (Exception ex)
    {
        cts.Cancel();
        cts.Token.ThrowIfCancellationRequested();
    }
}, cts.Token);