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秒后执行此代码");
    }
}
相关推荐
上单带刀不带妹6 分钟前
JavaScript中的Request详解:掌握Fetch API与XMLHttpRequest
开发语言·前端·javascript·ecmascript
小白学大数据7 分钟前
Python爬取闲鱼价格趋势并可视化分析
开发语言·python
ningmengjing_24 分钟前
在 PyCharm 中安装并配置 Node.js 的指南
开发语言·javascript·ecmascript
晓131339 分钟前
JavaScript基础篇——第五章 对象(最终篇)
开发语言·前端·javascript
LjQ20401 小时前
Java的一课一得
java·开发语言·后端·web
我要打打代码1 小时前
C#Winform窗体显示模糊的问题
c#
阿蒙Amon1 小时前
C#正则表达式全面详解:从基础到高级应用
开发语言·正则表达式·c#
CHANG_THE_WORLD2 小时前
「macOS 系统字体收集器 (C++17 实现)」
开发语言·c++·macos
妄想出头的工业炼药师2 小时前
python和C++相互调用使用
开发语言·c++
2301_764441333 小时前
Python管理咨询数据可视化实战:收入分布与顾问利用率双轴对比图表生成脚本
开发语言·python·信息可视化