温馨提示×

如何取消Async操作

小樊
141
2024-06-17 23:55:59
栏目: 编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

要取消一个异步操作,可以使用以下方法之一:

  1. 使用CancellationToken:在开始异步操作时,传入一个CancellationToken参数,并在取消操作时调用该token的Cancel方法。在异步操作中检查token是否已取消,如果是则立即停止操作。
CancellationTokenSource cts = new CancellationTokenSource();
CancellationToken token = cts.Token;

// 开始异步操作
Task.Run(async () => 
{
    await YourAsyncOperation(token);
}, token);

// 取消操作
cts.Cancel();
  1. 使用TaskCancellationSource:创建一个TaskCancellationSource对象,通过调用该对象的Cancel方法来取消异步操作。在异步操作中通过调用ThrowIfCancellationRequested方法来检查是否已取消。
TaskCancellationSource cts = new TaskCancellationSource();

// 开始异步操作
Task.Run(async () => 
{
    await YourAsyncOperation();
}, cts.Token);

// 取消操作
cts.Cancel();
  1. 使用Timeout:在异步操作中设置一个超时时间,在超时后停止操作。
Task.Run(async () => 
{
    await Task.Delay(5000); // 模拟异步操作

    if (cts.Token.IsCancellationRequested)
    {
        // 已取消操作
        return;
    }

    // 继续执行操作
}, cts.Token);

// 取消操作
cts.Cancel();

无论使用哪种方法,都需要在异步操作中检查是否已取消,以确保及时停止操作。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读:backgroundworker是否支持取消操作

0