c#异步编程async await

可以代替协程了

但是需要.net4 版本

unity2017以上版本可以用了

再也可以不用蛋疼的没有返回值的协程了

复制代码
    //异步编程,和Task一起用
    async void TestAsync(){
        //等待2秒
        await Task.Delay(2000);
        int a = 0;
        while (a < 20)
        {
            //空等待
            await Task.Yield();//相当于 yield return null
            a++;
            print(a);
        }

        print("haha");
    }
复制代码

 新例子

复制代码
    void Start()
    {
        //读取excel
        //GameReadExcel("/Test/Excel/testExcel.xlsx");

        //测试异步编程
        TestAsync();//建立异步任务
        tcs.SetResult(true);//控制任务完成,不然的话await会一直等待,这句就是设置了Task的返回值,设置了就代表任务完成了,也拿到值了
    }

    async void TestAsync()
    {
        await MyTestTask();
        Debug.Log("xxxx");
    }

    private TaskCompletionSource<bool> tcs;
    Task<bool> MyTestTask()
    {
        tcs = new TaskCompletionSource<bool>();
        Debug.Log("测试task方法");
        return tcs.Task;
    }
复制代码

 更多参考:https://blogs.msdn.microsoft.com/appconsult/2017/08/29/unity-coroutine-tap-zh-cn/

posted @   三页菌  阅读(409)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
历史上的今天:
2017-11-08 字典表+委托替代switch解决思路
2017-11-08 c#特性类 Attribute
2017-11-08 使用params
点击右上角即可分享
微信分享提示