blockingcollection

    1热度

    1回答

    希望有人可以提供一些有关生产者/消费者模式的建议 - 特别是如何最好地实现队列/ BlockingCollection是所有生产者/消费者类实例的COMMON? 让我们简化场景;考虑我有; 一个生产者类 单一单Consumer类。 A服务 包含生产者和消费者 类的实例的类。服务等级只是告诉生产者/消费者开始 和停止工作。 生产者将填充BlockingCollection 消费者将需要从同样的Blo

    0热度

    1回答

    消费者线程和多个生产者线程将其工作与System.Collections.Concurrent.BlockingCollection<T>同步。 制片方称blockingCollection.Add() 和消费运行 foreach (var item in blockingCollection.GetConsumingEnumerable()) {...} 现在,一个制片人想“刷新”缓冲区:生产者

    8热度

    1回答

    我写了下面的方法批量处理一个巨大的CSV文件。这个想法是从文件中读取一大块行到内存中,然后将这些行分成固定大小的批量。一旦我们得到分区,将这些分区发送到服务器(同步或异步),这可能需要一段时间。 private static void BatchProcess(string filePath, int chunkSize, int batchSize) { List<stri

    2热度

    1回答

    我想创建一个排队任务运行的方法,所以我试图用BlockingCollection来实现它。我发现的问题是每当我尝试添加Task时,任务都会执行。示例代码如下: private void button1_Click(object sender, EventArgs e) { textBox2.Clear(); for (int i = 0; i < 10; i++)

    0热度

    2回答

    根据特定顺序的值排序BlockingCollection<T>中的项目的最佳方法是什么?我知道有一个OrderBy方法,它可以用来实现排序吗?

    0热度

    2回答

    嗨,我有一个关于任务的简短问题。据我所知,任务本身可以启动多个线程。 比方说,我有两个硬件传感器,它们给我两个不同的数据端口上的数据。 我想在我的c#项目中将它们实现为生产者,然后对数据进行一些操作。在两个不同的任务中开始数据收集是否有意义?或者我应该实现他们在同一个任务,因为C#会自动把他们在不同的线程? var producerWorker = Task.Factory.StartNew(()

    0热度

    1回答

    我正在编写一个外汇交易机器人,并且在使用BlockingCollection一段时间后(约2小时)运行outOfMemory异常。 我基本1个队列对贸易图表,被加入到一个字典: private Dictionary<string, BlockingCollection<tick>> tickQueues = new Dictionary<string, BlockingCollection<ti

    1热度

    1回答

    BlockingCollection<T>类提供了一种实现生产者/消费者模式的简单方法,但不幸的是,它没有我需要的功能。它允许我在等待消耗元素时设置超时,但不提供限制将哪些项从集合中删除的方法。 我该如何实施一个类似BlockingCollection<T>的班级,但是它允许我指定应在哪些条件下进行拍摄? 例如:我需要采取Bar项目仅Amount特定的值等于: public class Bar

    2热度

    1回答

    我此刻已经得到的是一个触发间隔为5000毫秒计时: static Timer _aTimer = new System.Timers.Timer(); static void Main(string[] args) { _aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent); _aTimer.

    0热度

    1回答

    解决方案1和2之间有什么区别,_taskQ是BlockingCollection,我试图实现生产者 - 消费者场景。 BlockingCollection将默认的ConcurrentQueue用于内部存储。 //Solution 1 foreach (Action action in _taskQ.GetConsumingEnumerable()) { action(); // Pe