gpt4 book ai didi

c# - 将 List 转换为 BlockingCollection

转载 作者:太空狗 更新时间:2023-10-30 00:13:59 27 4
gpt4 key购买 nike

我正在尝试转换 List<T>BlockingCollection<T>这是我的代码..

List<Job> jobs = new List<Job>
{
new Job() {Id=Guid.NewGuid(), Name="test1" },
new Job() {Id=Guid.NewGuid(), Name="test2" },
new Job() {Id=Guid.NewGuid(), Name="test3" },
};

BlockingCollection<Job> coll = jobs as BlockingCollection<Job>;

Job类定义为..

public class Job
{
public Guid Id { get; set; }
public string Name { get; set; }
}

这种类型转换似乎不起作用。是否有任何更简单且性能高效的方法来转换 List<T>BlockingCollection<T>无需遍历列表并将每个列表项显式添加到集合中?

最佳答案

BlockingCollection<T>提供一个接受 IProducerConsumerCollection<T> 的构造函数.因此,您可以利用 IProducerConsumerCollection<T>具有高效 IEnumerable<T> 的实现复制机制,例如ConcurrentQueue<T> .

List<Job> jobs = new List<Job> {
new Job { Id = Guid.NewGuid(), Name = "test1" },
new Job { Id = Guid.NewGuid(), Name = "test2" },
new Job { Id = Guid.NewGuid(), Name = "test3" },
};

BlockingCollection<Job> col = new BlockingCollection<Job>(new ConcurrentQueue<Job>(jobs));

这避免了与将项目逐一添加到集合相关的(相当重要的)锁定开销。

关于c# - 将 List<T> 转换为 BlockingCollection<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37017358/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com