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秒后执行此代码");
    }
}
相关推荐
阿蒙Amon35 分钟前
C#随机数生成全面详解:从基础到高级应用
服务器·网络·c#
开开心心_Every35 分钟前
便捷的电脑自动关机辅助工具
开发语言·人工智能·pdf·c#·电脑·音视频·sublime text
霖002 小时前
C++学习笔记三
运维·开发语言·c++·笔记·学习·fpga开发
上单带刀不带妹2 小时前
JavaScript中的Request详解:掌握Fetch API与XMLHttpRequest
开发语言·前端·javascript·ecmascript
小白学大数据2 小时前
Python爬取闲鱼价格趋势并可视化分析
开发语言·python
ningmengjing_2 小时前
在 PyCharm 中安装并配置 Node.js 的指南
开发语言·javascript·ecmascript
晓13133 小时前
JavaScript基础篇——第五章 对象(最终篇)
开发语言·前端·javascript
LjQ20403 小时前
Java的一课一得
java·开发语言·后端·web
我要打打代码3 小时前
C#Winform窗体显示模糊的问题
c#
阿蒙Amon3 小时前
C#正则表达式全面详解:从基础到高级应用
开发语言·正则表达式·c#