using System;
using System.Collections;
using System.Collections.Generic;
using System.Threading.Tasks;
public class CoroutineExample
{
// 协程方法,使用IEnumerator返回类型
public IEnumerator SimpleCoroutine()
{
Console.WriteLine("协程开始");
// 模拟一些异步操作或延迟
yield return Task.Delay(1000);
Console.WriteLine("协程结束");
}
// 调用协程的方法
public async Task RunCoroutine(IEnumerator coroutine)
{
while (coroutine.MoveNext())
{
if (coroutine.Current is Task task)
{
await task;
}
}
}
public static void Main(string[] args)
{
var example = new CoroutineExample();
example.RunCoroutine(example.SimpleCoroutine()).GetAwaiter().GetResult();
}
}
IEnumerator 和 yield return:
IEnumerator 是 C# 中用于实现迭代器的接口。yield return 语句用于在每次调用 MoveNext() 时返回一个值,并暂停方法的执行,直到下一次调用 MoveNext()。SimpleCoroutine 方法:
Task.Delay),最后打印 "协程结束"。RunCoroutine 方法:
MoveNext() 来逐步执行协程中的代码。coroutine.Current 是一个 Task,则等待该任务完成。Main 方法:
Main 方法中,我们创建了一个 CoroutineExample 实例,并调用了 RunCoroutine 方法来启动协程。GetAwaiter().GetResult() 来同步等待协程完成。这个示例展示了如何在 C# 中实现类似协程的行为,尽管 C# 并没有像 Unity 或其他语言那样内置的协程支持,但可以通过 IEnumerator 和 yield return 实现类似的逻辑。
上一篇:c# hashmap
下一篇:c#创建数组
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站