C# await async 异步任务

该博客介绍了如何通过创建一个自定义的AsyncTask类来简化Unity中Addressable异步加载资源的过程,使代码更易读。AsyncTask包含了一个AwaiterStatus枚举来表示任务状态,并实现了获取等待器、检查是否完成、设置结果和获取结果的方法。在使用示例中,展示了如何加载并实例化一个资源,然后在完成时调用回调函数。

Addressable异步加载资源写起来有些地方不太好控制代码结构。所以我简单做了一个AsyncTask,这样代码写起来简单易懂。

[AsyncMethodBuilder(typeof(AsyncSTaskMethodBuilder))]//指定Builder类,async修饰所必须
    public class AsyncTask<T> where T : UnityEngine.Object
    {
        public enum AwaiterStatus
        {
            Pending = 0,
            Succeeded = 1,
            Faulted = 2,
            Canceled = 3
        }
        private AwaiterStatus status { get; set; }

        private Awaiter<T> awaiter;

        T Resualt;

        public Awaiter<T> GetAwaiter()
        {
            status = AwaiterStatus.Pending;
            awaiter = new Awaiter<T>(this);
            return awaiter;
        }

        public bool IsComplete()
        {
            Debug.Log($"AsyncTask -> IsCompleted????{status} {status != AwaiterStatus.Pending}");
            return status != AwaiterStatus.Pending; 
        }

        public void OnComplete(T value)
        {
            Debug.Log
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值