C# 多线程批处理队列

C# 多线程批处理队列,c#,multithreading,.net-3.5,queue,tcplistener,C#,Multithreading,.net 3.5,Queue,Tcplistener,我目前正在编写一个TCP侦听器,它有许多客户端应用程序向发送短消息。我拥有的TCP侦听器是一个C#winform,我需要做的是成批处理这些日志,以避免在队列中收到的每一条消息上都撞到数据库。目前,在侦听器中收到的每一条消息上,我都使用C#Queue类排队 每5分钟将执行一个单独的线程来检查此队列,如果有任何排队的项目,则开始处理该队列。这种设计似乎存在并发/竞争条件问题,因为当5分钟的线程启动时,接收到的新消息无法再访问队列,因为我在出列期间锁定了队列。因此,这些新消息会丢失。似乎只有当有大量消

我目前正在编写一个TCP侦听器,它有许多客户端应用程序向发送短消息。我拥有的TCP侦听器是一个C#winform,我需要做的是成批处理这些日志,以避免在队列中收到的每一条消息上都撞到数据库。目前,在侦听器中收到的每一条消息上,我都使用C#Queue类排队

每5分钟将执行一个单独的线程来检查此队列,如果有任何排队的项目,则开始处理该队列。这种设计似乎存在并发/竞争条件问题,因为当5分钟的线程启动时,接收到的新消息无法再访问队列,因为我在出列期间锁定了队列。因此,这些新消息会丢失。似乎只有当有大量消息被发送到TCP侦听器时才会发生这种情况


有人认为我的设计有缺陷吗?或者有更好的解决方案吗?基于发送消息的客户端应用程序的限制,我不允许使用MSMQ或WCF。

因此您有一个生产者-消费者场景,有多个生产者和一个(缓冲)消费者。您可能想看看(他们有一个.NET3.5版本)。至少,您可以利用他们的后端。

如果没有一些代码,您可能很难说问题出在哪里。