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 @ 2018-11-08 19:57  三页菌  阅读(402)  评论(0编辑  收藏  举报