Технически, способ установить задачу в состояние Canceled
- это сгенерировать OperationCanceledException
и передать токен отмены, который был связан с задачей (что обычно делается путем вызова метода CancellationToken.ThrowIfCancellationRequested()
). Но для этого требуется, чтобы токен IsCancellationRequested
был true
. Таким образом, один из способов добиться желаемого эффекта - сначала отменить, а затем позвонить ThrowIfCancellationRequested()
:
var cts = new CancellationTokenSource();
Task.Run(() => {
try
{
// Get some data from APIs...
GetDataFromApi();
}
catch (Exception ex)
{
cts.Cancel();
cts.Token.ThrowIfCancellationRequested();
}
}, cts.Token);