C#异步Task,await,async和Unity同步协程

标题

Task

Task是声明异步任务的必要关键字,也可以使用Task<>泛型来定义Task的返回值。

await

await是用于等待一个Task结束,否则让出该线程控制权,让步给其他线程,直到该Task结束才往下运行。

async

异步声明的关键词。

举例:

MyTask声明了一个Task,该Task又匿名函数定义不接受参数,并且函数主体是睡觉1秒。Task.Run用于分配线程资源,如果该任务完成就归还线程资源到线程池,后续await task等待该函数完成,并且打印信息。

csharp 复制代码
namespace ConsoleApp1
{
    internal class Program
    {
        static async Task Main(string[] args)
        {
            Program program = new Program();
            await program.MyTask();
        }

        public async Task MyTask()
        {
            Task task = Task.Run(() =>
            {
                Thread.Sleep(1000);
            });

            await task;

            Console.WriteLine("This is Task");

        }
    }
}

Unity协程

协程是同步的,由主线程调度。

csharp 复制代码
public class CoroutineExample : MonoBehaviour
{
    void Start()
    {
        // 启动协程
        StartCoroutine(MyTask());
    }

    IEnumerator MyTask()
    {
        Debug.Log("开始任务");
        
        // 等待1秒
        yield return new WaitForSeconds(1f);
        
        Debug.Log("1秒后执行此代码");
    }
}
相关推荐
ZK_H9 分钟前
半导体工艺流程
java·c语言·开发语言·计算机网络·金融
计算机安禾15 分钟前
【数据结构与算法】第39篇:图论(三):最小生成树——Prim算法与Kruskal算法
开发语言·数据结构·c++·算法·排序算法·图论·visual studio code
liliangcsdn16 分钟前
sentence-transformer如何离线加载和使用模型
开发语言·前端·php
Crazy________17 分钟前
4.10dockerfile构建镜像
java·开发语言
fish_xk19 分钟前
c++内存管理
开发语言·c++·算法
独特的螺狮粉29 分钟前
城市空气质量简易指数查询卡片:鸿蒙Flutter框架 实现的空气质量查询应用
开发语言·flutter·华为·架构·harmonyos
网域小星球30 分钟前
C语言从0入门(八)|函数基础:封装、调用与参数传递精讲
c语言·开发语言
东宇科技35 分钟前
如何使用js进行抠图。识别商品主体
开发语言·javascript·ecmascript
Dxy123931021637 分钟前
Python使用PyEnchant详解:打造高效拼写检查工具
开发语言·python
网域小星球41 分钟前
C 语言从 0 入门(十五)|综合小项目:菜单交互与简易功能实现
c语言·开发语言·交互