C#阻塞采集数据切换时间间歇性

C#阻塞采集数据切换时间间歇性,c#,multithreading,asynchronous,producer-consumer,C#,Multithreading,Asynchronous,Producer Consumer,阻塞收集中的数据切换有时花费太多时间 示例代码: 制作人: Blockingcollection<byte[]> collection = new Blockingcollection (5000); { while (condition) { byte[] data = new byte[10240] // fill data here.. Read from external source collection.ad

阻塞收集中的数据切换有时花费太多时间

示例代码:
制作人:

Blockingcollection<byte[]> collection = new Blockingcollection (5000);
{
    while (condition)
    {
        byte[] data = new byte[10240]
        // fill data here.. Read from external source
        collection.add(data);
    }
collection.CompleteAdding();
}

生产者和消费者都在执行不同的任务。它运行得很好,但有时将数组添加到集合中需要大约50毫秒,这是交易的破坏者,通常传递数据需要不到1毫秒的时间。理论上,当写入磁盘时,使用者线程不应阻塞,因为写入磁盘在单独的线程上。

这是传递给构造函数的boundedCapacity值:

Blockingcollection<byte[]> collection = 
    new Blockingcollection (5000 /* <--- boundedCapacity */ );
Blockingcollection=

新Blockingcollection(5000/*我尝试过编辑您的问题,但很快就放弃了。请编辑为有效、可编译的格式化代码。
Blockingcollection<byte[]> collection = 
    new Blockingcollection (5000 /* <--- boundedCapacity */ );