blockingcollection相关内容
为什么在使用 GetConsumableEnumerable 时 Parallel.ForEach 循环以 OperationCancelledException 退出? //函数外静态 BlockingCollection_collection = new BlockingCollection();var t = Task.Factory.StartNew(Producer);Parallel
..
我使用 ConcurrentDictionary 来存储日志行,当我需要向用户显示它们时,我调用 ToList() 来生成一个列表.但奇怪的是,有些用户在列表中最先收到最近的行,而逻辑上他们应该在最后. 这是因为 ConcurrentDictionary 不能保证 IEnumerate 接口上的持久顺序,或者可能是什么原因? 解决方案 No ConcurrentDictionary(
..
我不熟悉使用阻塞收集和线程,并希望确保我遵循最佳实践.我正在使用不是线程安全的第三方 API.我将同时向 API 发出多个请求,因此我需要将这些请求添加到队列中并一个接一个地处理它们.为此,我有一个阻塞集合: BlockingCollectionmyTasks = new BlockingCollection();private void myEventHandler(object sende
..
我正在尝试创建一种将要运行的任务排队的方法,因此我尝试使用 BlockingCollection 来实现它.我发现的问题是每当我尝试添加 Task 时,任务都会执行.示例代码如下: private void button1_Click(object sender, EventArgs e){textBox2.Clear();for (int i = 0; i ();线程消费者线程 = 新线程(启
..
我有一个 tcp 侦听器,它侦听和写入来自服务器的数据.我使用了 BlockingCollection 来存储数据.这里我不知道文件什么时候结束.所以,我的文件流总是打开的. 我的部分代码是: 私有静态 BlockingCollectionBuffer = new BlockingCollection();过程(){var consumer = Task.Factory.StartNew(
..
我正在通过下面的“生产者"从外部套接字连接获取数据. 我将数据放入BlockingCollection,然后由消费者读取.如果消费者在固定时间内没有收到数据,它无论如何都会触发,这样我的 ProcessDataOnGrid 就会在数据到达时或至少在 x 毫秒后执行某些操作. 问题是我已经读到 BlockingCollection 是首选方法,但看起来很慢. 从获取外部数据到调用
..
我有一个带有重复元素的并发 BlockingCollection.如何修改它以添加或获取不同的元素? 解决方案 BlockingCollection 的默认后备存储是 ConcurrentQueue.正如其他人指出的那样,使用它添加不同的项目相当困难. 但是,您可以创建自己的集合类型来实现 IProducerConsumerCollection,并将其传递给 BlockingColl
..
我尝试编写一些东西来散列数字,并根据列表检查它们以查看是否存在匹配的散列. 我使用 for 循环使这个工作正常,然后我决定尝试使用 Parallel.For 加快速度 - 不幸的是,这会导致我在调试时遇到问题的 ArgumentOutOfRangeException. 公共类HashCompare{私人字符串encryptedCardNumber;私有加密器加密器;私有 BlockingC
..
我需要构建一个阻塞优先级队列,我的预感是 TakeFromAny 可能是秘密成分,但是关于该方法的文档很少.它的目的/适当用途是什么? 我的要求是多个线程将添加到高优先级或低优先级队列中.一个线程会消耗这两个队列,总是在低优先级队列之前从高优先级队列中取出. BlockingCollection 或 TakeFromAny 方法很可能对我没有任何用处.如果是这样,那么将不胜感激指向正确
..
希望有人可以提供有关生产者/消费者模式的一些建议,尤其是如何最好地实现对所有生产者/消费者类实例 COMMON 的Queue/BlockingCollection? 让场景简化;认为我有; 单个Producer类 一个单一的Consumer类. 服务包含生产者和消费者实例的类班级.服务类只是告诉生产者/消费者开始和停止工作. 生产者将填充BlockingCollection
..
我已经多次使用 BlockingCollection 用于实现生产者/消费者模式,但是由于相关的开销,我在使用极其细粒度的数据时遇到了糟糕的性能.这通常迫使我通过对数据进行分块/分区来即兴创作,换句话说,是使用 BlockingCollection 而不是 BlockingCollection .这是最新示例.这是可行的,但是很丑陋且容易出错.我最终在生产者和使用者上都使用了
..
我有一个组件,可以向基于Web的API提交请求,但是必须限制这些请求,以免违反API的数据限制.这意味着所有请求都必须通过队列以控制其提交速率,但是它们可以(并且应该)并发执行以实现最大吞吐量.每个请求都必须在将来的某个时候将某些数据返回到调用代码. 我正在努力创建一个不错的模型来处理数据返回. 使用BlockingCollection我不能仅仅从Schedule方法返回Task
..
基本上,我的Windows服务应用程序中有一个blockcollection集合,每次我想向集合中添加4个项目然后对其进行处理。 第一轮没问题,但是第二轮失败了。 错误是 关于添加的内容,BlockingCollection已标记为完整。 我的代码: public static BlockingCollection
..
我订阅了一个服务,该服务将在收到新元素时引发一个事件,我将此元素添加到BlockingCollection. 我正在运行第二个线程,该线程将循环BlockingCollection以添加/更新可观察集合中的元素. 问题是您如何添加ObservableCollection? 我知道我不能只对这种类型的集合执行.add,因为它需要在UI线程上完成.因此,我尝试使用不同的ObservableCo
..
我正在处理一个服务器端控制台应用程序,该应用程序从多个WCF服务接收数据,对其进行一些处理,然后使用SignalR通过单个连接将结果转发到IIS服务器. 我尝试使用生产者使用者模式来实现这一点,其中WCF服务是生产者,而使用SignalR发送数据的类是使用者.对于队列,我使用了 BlockingCollection . 但是,当使用await/async在使用者的while循环中发送数
..
使用者线程和多个生产者线程将其工作与 System.Collections.Concurrent.BlockingCollection . 生产者致电blockingCollection.Add() 消费者运行 foreach (var item in blockingCollection.GetConsumingEnumerable()) {...} 现在,一个生产者想要“
..
我正在使用ConcurrentDictionary存储日志行,当需要向用户显示日志行时,我致电ToList()生成列表.但是奇怪的是,某些用户在列表中排在第一位,而在逻辑上应该排在最后. 这是因为ConcurrentDictionary不保证IEnumerate接口上的持久性顺序吗?或者是什么原因? 解决方案 否ConcurrentDictionary(和Dictionary)不能
..
使用ArrayBlockingQueue更好的情况是什么?使用LinkedBlockingQueue什么时候更好? 如果LinkedBlockingQueue默认容量等于MAX Integer,将它用作具有默认容量的BlockingQueue真的很有帮助吗? 解决方案 ArrayBlockingQueue 支持一个大小在创建后永远不会改变的数组。将容量设置为 Integer.MAX_VA
..
我有一个量化的&安培;使用任务并行库重复的问题, BlockingCollection< T> , ConcurrentQueue< T> &安培; GetConsumingEnumerable 试图创建一个简单的管道。 在简单地说,将条目添加到默认 BlockingCollection< T> (其中引擎盖下是依靠一个 ConcurrentQueue&L
..
下面是我的问题。结果 我加载了几个BitmapImages在BlockingCollection 公共无效blockingProducer(BitmapImage的imgBSource) { 如果 collection.Add(imgBSource)(collection.IsAddingCompleted!); } 加载发生在backgroungwork线程。
..