C# IAsyncEnumerable

using System.Collections;
using System.Diagnostics;
using System.Threading.Tasks;

namespace ConsoleApp2
{
    internal class Program
    {
        static async Task Main(string[] args)
        {
            Console.WriteLine($"{DateTime.Now},start of main!");
            await foreach(var item in GetIEnumerableStringAsync(100))
            {
                Console.WriteLine($"{DateTime.Now},{item}");
            }
            Console.WriteLine($"{DateTime.Now},End of main!");
            Console.ReadLine();
        }

        static string GetMem()
        {
            return $"Memory :{Process.GetCurrentProcess().PrivateMemorySize64 / 1024 / 1024:N2} M";
        }

        static IEnumerable<string> GetIEnumerableStrings(int cnt)
        {
            if(cnt<0)
            {
              yield break;
            }
            for(int i=1;i<cnt+1;i++)
            {
                yield return $"{i}_{Guid.NewGuid():N}";
                Thread.Sleep(1000);
            }
        }

        static async IAsyncEnumerable<string> GetIEnumerableStringAsync(int cnt)
        {
            if(cnt<0)
            {
                yield break;
            }
            for(int i=1;i<cnt+1;i++)
            {
                yield return $"{i}_{Guid.NewGuid():N}_{GetMem()}";
                await Task.Delay(1000);
            }
        }
    }
}

 

image

 

image

 

posted @ 2026-03-09 21:06  FredGrit  阅读(10)  评论(0)    收藏  举报