SetCanceled
SetCanceled без токена помечает задачу отменённой; await бросает TaskCanceledException.
Синтаксис
tcs.SetCanceled();
Пример
Давайте проверим IsCanceled после SetCanceled:
using System;
using System.Threading.Tasks;
class Program
{
static void Main()
{
var tcs = new TaskCompletionSource<int>();
tcs.SetCanceled();
Console.WriteLine(tcs.Task.IsCanceled);
}
}
Результат выполнения кода:
True
Пример
Давайте перехватим TaskCanceledException при await:
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var tcs = new TaskCompletionSource<int>();
tcs.SetCanceled();
try
{
await tcs.Task;
}
catch (TaskCanceledException)
{
Console.WriteLine("fail");
}
}
}
Результат выполнения кода:
"fail"
Смотрите также
-
SetException,
завершение с ошибкой -
TrySetResult,
безопасная выдача -
Task,
обещание -
ValueTask,
другой тип задачи