IoC容器是“控制反转”设计思想的具体实现,它提供“依赖注入”机制。当你想搭建一个灵活、可扩展的框架,就永远绕不开IoC容器这一话题。 如果你想了解为何要在Unity中使用IoC容器,其中的好处与代价,那么本文章或许能给你一些启发。在阅读本文章之前,强烈推荐先了解VContainer(链接)和它的官方文档,条件允许的话,你也可以浏览一下它的源代码。…
前言 这一章我们来讨论如何让 STask 变得更酷,让我们可以像下面这样实现一些功能: await STask.Delay(1000); // 等待1秒 await STask.NextFrame(); // 等待下一帧 await STask.WhenAny(task1, task2); // 等待其中一个任务完成 await STask.Whe…
总览 正式编写代码前,我们需要对异步框架有一个大体的认识,因此我简单画了一幅类图,帮助大家留个印象: 除了接口和类 AsyncSTask 、TaskPool 以外,大部分结构都是结构体struct类型,同时我也在图中特别注明了,TaskPool 为静态类。 通过图我们得知,状态机接口 AsyncSTaskMethodBuilder 通过接口 ISt…
STask GitHub仓库链接 背景 What? 异步方法诞生于C# 5时代,它基于 Task 和 Task<T> 类型,让C#在异步编程领域的思想产生了巨大转变。以从文件中读取内容为例: static async Task Main(string[] args) { string fileName = "d:/1.txt";…
本文手动翻译自:One user scenario to rule them all - Developer Support (microsoft.com) 几乎所有C#异步方法的特殊行为都可以用一个用例解释:将现有的同步代码修改为异步代码应该尽可能简单。你应该能够在方法的返回类型前面添加 async 关键字,再在方法名后添加 Async 后缀,最…