.NET(C#):线程安全集合的阻塞BlockingCollection的使用(4)

来源:未知 责任编辑:责任编辑 发表时间:2014-03-23 22:28 点击:

//试图添加1-10
Task.Run(() =>
{
    var forOpt = new ParallelOptions()
    {
        //防止在某些硬件上并发数太多
        MaxDegreeOfParallelism = 2
    };
 
    Parallel.For(1, 11, forOpt, i =>
    {
        Console.WriteLine("等待加入:" + i);
        bcollec.Add(i);
        Console.WriteLine("成功加入:" + i);
        Thread.Sleep(500);
    });
});
 
Thread.Sleep(600);
//开始枚举
Task.Run(() =>
{
    foreach (var i in bcollec.GetConsumingEnumerable())
        Console.WriteLine("输出:" + i);
    Console.WriteLine("完成枚举");
});
 
Thread.Sleep(300);
 
bcollec.CompleteAdding();
Console.WriteLine("=== 调用CompleteAdding");
 
Thread.Sleep(Timeout.Infinite);
 
可能的输出:
等待加入:1
等待加入:6
成功加入:1
成功加入:6
等待加入:2
成功加入:2
等待加入:7
成功加入:7
输出:1
输出:6
输出:2
输出:7
=== 调用CompleteAdding
完成枚举
等待加入:3
等待加入:8
 
可以看到,等CompleteAdding,“枚举完成”马上被输出!
 
:D

 作者:Mgen
 

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • 浅析.NET下XML数据访问新机制
  • asp.net 面试+笔试题目第1/2页
  • C# 邮件地址是否合法的验证
  • C#高级编程:数据库连接[1]
  • asp.net 设置GridView的选中行的实现代码
  • 经典C++程序1
  • IIS 自动回收导致后台定时器失效的问题解决
  • ASP.NET GridView列表代码示例
  • 微软ASP.NET站点部署指南(3):使用Web.Config文件的Transforma
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1