本文整理汇总了C#中System.Collections.Concurrent.ConcurrentBag<T>类的典型用法代码示例。如果您正苦于以下问题:C# ConcurrentBag<T>类的具体用法?C# ConcurrentBag<T>怎么用?C# ConcurrentBag<T>使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
ConcurrentBag<T>类属于System.Collections.Concurrent命名空间,在下文中一共展示了ConcurrentBag<T>类的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。
示例1: Main
//引入命名空间
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Threading.Tasks;
class ConcurrentBagDemo
{
// Demonstrates:
// ConcurrentBag<T>.Add()
// ConcurrentBag<T>.IsEmpty
// ConcurrentBag<T>.TryTake()
// ConcurrentBag<T>.TryPeek()
static void Main()
{
// Add to ConcurrentBag concurrently
ConcurrentBag<int> cb = new ConcurrentBag<int>();
List<Task> bagAddTasks = new List<Task>();
for (int i = 0; i < 500; i++)
{
var numberToAdd = i;
bagAddTasks.Add(Task.Run(() => cb.Add(numberToAdd)));
}
// Wait for all tasks to complete
Task.WaitAll(bagAddTasks.ToArray());
// Consume the items in the bag
List<Task> bagConsumeTasks = new List<Task>();
int itemsInBag = 0;
while (!cb.IsEmpty)
{
bagConsumeTasks.Add(Task.Run(() =>
{
int item;
if (cb.TryTake(out item))
{
Console.WriteLine(item);
itemsInBag++;
}
}));
}
Task.WaitAll(bagConsumeTasks.ToArray());
Console.WriteLine($"There were {itemsInBag} items in the bag");
// Checks the bag for an item
// The bag should be empty and this should not print anything
int unexpectedItem;
if (cb.TryPeek(out unexpectedItem))
Console.WriteLine("Found an item in the bag when it should be empty");
}
}
开发者ID:.NET开发者,项目名称:System.Collections.Concurrent,代码行数:53,代码来源:ConcurrentBag
注:本文中的System.Collections.Concurrent.ConcurrentBag<T>类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论