zoukankan      html  css  js  c++  java
  • C# Async Streams

    先看代码

    using System;
    using System.Collections.Generic;
    using System.Threading.Tasks;
    
    namespace AsyncStream
    {
        class Program
        {
            static async Task Main(string[] args)
            {
                var product = new Productor();
    
                var numbers = await product.GetNumbersAsync();
                foreach(var number in numbers)
                {
                    Console.WriteLine(number);
                }
    
                return;
    
                await foreach(var number in product.EnumerateNumbersAsync())
                {
                    Console.WriteLine(number);
                }
            }
        }
    
        public class Productor
        {
            public async Task<IEnumerable<int>> GetNumbersAsync()
            {
                List<int> numbers = new();
                for (int tens = 0; tens < 10; tens++)
                {
                    Console.WriteLine("get some numbers.");
                    for (int digit = 0; digit < 10; digit++)
                    {
                        numbers.Add(tens * 10 + digit);
                    }
                    Console.WriteLine("making next request...");
                    await Task.Delay(1000);
                }
                return numbers;
            }
    
            public async IAsyncEnumerable<int> EnumerateNumbersAsync()
            {
                for (int tens = 0; tens < 10; tens++)
                {
                    Console.WriteLine("get some numbers.");
                    for (int digit = 0; digit < 10; digit++)
                    {
                        yield return tens * 10 + digit;
                    }
                    Console.WriteLine("making next request...");
                    await Task.Delay(1000);
                }
            }
        }
    }
    
    

    上部分执行结果如下图

    注释 main 函数 return ;之前的代码

            static async Task Main(string[] args)
            {
                var product = new Productor();
    
                // var numbers = await product.GetNumbersAsync();
                // foreach(var number in numbers)
                // {
                //     Console.WriteLine(number);
                // }
    
                // return;
    
                await foreach(var number in product.EnumerateNumbersAsync())
                {
                    Console.WriteLine(number);
                }
            }
    

    执行结果如下图

  • 相关阅读:
    azkaban使用--邮件发送配置
    azkaban使用--schedule定时任务
    azkaban使用--传入动态参数
    GET和POST区别
    微信小程序与java后台交互
    java中的锁分类
    对CAS机制的理解(二)
    对CAS机制的理解(一)
    Spring中Model、ModelMap及ModelAndView之间的区别
    MySQL命令行导入.sql文件遇到的问题
  • 原文地址:https://www.cnblogs.com/microestc/p/14961522.html
Copyright © 2011-2022 走看看