ZBLOG

C#中协程

在C#中,协程(Coroutine)是一种轻量级的并发编程模型,它可以将一个方法的执行暂停,并在稍后恢复。在C#中,使用yield return关键字来创建协程。

下面是一个简单的示例代码,演示了如何使用协程:

using System;
using System.Collections;

public class CoroutineExample
{
    public static void Main()
    {
        IEnumerator coroutine = MyCoroutine();
        
        // 启动协程
        StartCoroutine(coroutine);
        
        Console.WriteLine("Main: After starting coroutine");
        
        // 模拟主线程的一些工作
        for (int i = 0; i < 5; i++)
        {
            Console.WriteLine("Main: Working...");
            System.Threading.Thread.Sleep(1000);
        }
    }
    
    // 定义一个协程方法
    static IEnumerator MyCoroutine()
    {
        Console.WriteLine("MyCoroutine: Started");
        
        // 暂停一秒钟
        yield return new WaitForSeconds(1.0f);
        
        Console.WriteLine("MyCoroutine: Resumed after waiting");
        
        // 继续执行一些操作
        for (int i = 0; i < 3; i++)
        {
            Console.WriteLine($"MyCoroutine: Step {i}");
            
            // 暂停0.5秒钟
            yield return new WaitForSeconds(0.5f);
            
            Console.WriteLine($"MyCoroutine: Resumed after step {i}");
            
            // 可以通过yield break语句提前结束协程
            if (i == 1)
                yield break;
        }
        
         Console.WriteLine("MyCoroutine: Finished");
    }
    
    // 启动协程的方法,用于调度协程的执行
    static void StartCoroutine(IEnumerator coroutine)
    {
        while (coroutine.MoveNext())
        {
            // 等待一帧后继续执行
            System.Threading.Thread.Sleep(16);
        }
    }
}

在上面的示例中,MyCoroutine()方法是一个协程,它会在不同时间点暂停并恢复。StartCoroutine()方法负责调度协程的执行。

注意:C# 5.0 引入了 async/await 关键字,也可以用于实现异步编程模型,并且更为常见和推荐使用。但是如果你对协程模型感兴趣或者在旧版本的 C# 中工作,可以使用上述方式实现简单的协程功能。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=1790

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?