C# C关于排队的建议

C# C关于排队的建议,c#,queue,fifo,task-queue,C#,Queue,Fifo,Task Queue,我正在就分配给我的一个项目寻求建议,我想看看它是如何专业地完成的,或者任何能引导我走向正确方向的建议 我有一个服务器,它接受来自客户端的命令,并将字节流推送到串行端口。虽然多个客户端可以向这个服务器发送命令,但我们的硬件一次只能处理一个命令。我的问题是在软件端排队 我实现了一个队列帮助器类,该类还将数据插入到数据集中,其中包含:请求的客户端号、要写入串行端口的消息数据字节数组和消息类型命令描述。它还将在表单上的DataGrid中列出队列命令。可能不是这样,但这是我能想到的唯一一件事,即保留请求的

我正在就分配给我的一个项目寻求建议,我想看看它是如何专业地完成的,或者任何能引导我走向正确方向的建议

我有一个服务器,它接受来自客户端的命令,并将字节流推送到串行端口。虽然多个客户端可以向这个服务器发送命令,但我们的硬件一次只能处理一个命令。我的问题是在软件端排队

我实现了一个队列帮助器类,该类还将数据插入到数据集中,其中包含:请求的客户端号、要写入串行端口的消息数据字节数组和消息类型命令描述。它还将在表单上的DataGrid中列出队列命令。可能不是这样,但这是我能想到的唯一一件事,即保留请求的客户机和数据,并直观地显示队列

我在哪里处理队列的处理?我考虑在自定义事件中处理它,如果DataGrid列表更改了添加/删除的项,则获取数据集中的第一行数据并将其发送到串行端口

如有任何意见或建议,我们将不胜感激

谢谢


编辑:我忘了添加它也需要来自SerialPort的响应,以便从队列中删除当前执行的命令。

我将使用数据库表存储命令队列。web应用程序将向队列中添加记录并显示队列,然后一个单独的进程(如Windows服务或控制台应用程序)将从数据库请求下一个命令并将其发送到串行端口。

客户端请求可以随时传入,它们可能会由某个代理类WCF处理?在它自己的线程/任务上。然后,该线程/任务需要与实际处理请求的模型“内部”的任务进行协调

一个很好的类是

服务器线程将阻塞,直到集合中有要处理的内容。然后,它可以以线程安全的方式从集合中获取并处理它。这样做可以确保请求到达时可以被接受,但每次都会被处理

这里要考虑的整体模式是生产者-消费者


GJ

如果它是一个高传输率的web应用程序,您可能需要查看排队系统,例如,或。然后,窗口服务可以提取排队的项目并将其发送到串行端口。

如果您接受来自客户端的数据,您肯定不想从服务器的数据网格修改/输入数据?响应一个新的datagrid项听起来不是一个开始的好地方为什么实现了Queue类?它已经在那里了。@Jon Cage:我只是用DataGrid来显示队列列表,谁的命令是下一个队列。@user177883:我实现了一个帮助器类,在我对一个项目排队时,它还将来自客户端的数据插入到数据集中。