UniTask--CancellationTokenSource

本文介绍了如何在Unity中使用UniTask库的CancellationTokenSource实现异步任务的启动、取消和异常处理。通过示例展示了两种取消任务的方式,并展示了取消操作的效果。
摘要由CSDN通过智能技术生成

UniTask–CancellationTokenSource

简单写了一份代码,大家可以在Unity中尝试运行一下,希望能够帮助大家理解UniTask的取消方法。

using System;
using System.Collections;
using System.Collections.Generic;
using System.Threading;
using Cysharp.Threading.Tasks;
using UnityEngine;
using UnityEngine.UI;

public class LearnTaskFour : MonoBehaviour
{
    public Button btnS;
    public Button btnE;

    private CancellationTokenSource _one;
    private CancellationToken _token;

    private void Start()
    {
        _one = new CancellationTokenSource();
        _token = _one.Token;
        //第一种 使用try Catch得方式
        // btnS.onClick.AddListener(async () =>
        // {
        //     try
        //     {
        //         await Run(_token);
        //     }
        //     catch (OperationCanceledException e)
        //     {
        //         Debug.Log(e);
        //     }
        // });
        
        //第二种
        btnS.onClick.AddListener(async () =>
        {
            bool cancel = await Run(_token).SuppressCancellationThrow();
            if (cancel)
            {
                Debug.Log("取消");
            }
        });
        btnE.onClick.AddListener(async () =>
        {
            _one.Cancel();//取消
            _one.Dispose();
            _one = new CancellationTokenSource();
            _token = _one.Token;
        });
    }
    private async UniTask Run(CancellationToken token)
    {
        while (true)
        {
            await UniTask.NextFrame(token);
            Debug.Log("执行");
        }
    }
}

点击btns时,开始执行

点击btns

点击btne,取消

点击BTNE

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值