zoukankan      html  css  js  c++  java
  • [原]C#多线程异步操作

    AsyncEnumerator版

                BlockingCollection<string> idsToProcess = new BlockingCollection<string>();
                idsToProcess.Add("a");
                idsToProcess.Add("b");
                idsToProcess.Add("c");
                Timer t = null;
                t = new Timer(async _ =>
                {
                    idsToProcess.CompleteAdding();
                    await t.DisposeAsync();
                }, null, 5000, Timeout.Infinite);
                idsToProcess.GetConsumingEnumerable().ParallelForEachAsync(async id =>
                {
                    await Task.Run(() =>
                    {
                        Console.WriteLine(id);
                    });
                }).GetAwaiter().GetResult();

    Nito.AsyncEx版

                BlockingCollection<string> idsToProcess = new BlockingCollection<string>();
                idsToProcess.Add("a");
                idsToProcess.Add("b");
                idsToProcess.Add("c");
                Timer t = null;
                t = new Timer(async _ =>
                {
                    idsToProcess.CompleteAdding();
                    await t.DisposeAsync();
                }, null, 5000, Timeout.Infinite);
                Parallel.ForEach(idsToProcess.GetConsumingEnumerable(),
                    id =>
                    {
                        AsyncContext.Run(async () =>
                        {
                            await Task.Run(() =>
                            {
                                Console.WriteLine(id);
                            }); 
                        });
                    });
  • 相关阅读:
    ye间模式
    Xutilt网络获取数据
    JUnit
    IntelliJ IDEA快捷键
    Map存放不同数据或对象
    SQL改
    外键约束
    Hibernate之SQL语言查询
    Hibernate之Criteria语言查询
    Hibernate之HQL语言查询
  • 原文地址:https://www.cnblogs.com/yzpopulation/p/12398841.html
Copyright © 2011-2022 走看看