c#异步编程async await

时间:2022-05-22 15:09:28

可以代替协程了

但是需要.net4 版本

unity2017以上版本可以用了

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

    //异步编程,和Task一起用
async void TestAsync(){
//等待2秒
await Task.Delay();
int a = ;
while (a < )
{
//空等待
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/