问:如何使用FIFO队列串行化并行连接?

时间:2017-01-26 13:40:41

标签: c#

我使用带有串行功能的C#类将我的应用程序连接到CNC机器 - 该项目是MDI。

串行函数由不同的子表单调用(其中有5个)。

在另一个为处理连接而创建的类中,我将创建一个FIFO队列来管理来自子表单的请求。

子表单将通过套接字与连接类通信。 这是一个好主意吗?
如果没有,还有另一种方法吗?

我正在考虑这种模式:

private struct s_fifoObj
    {
        public int priority;    //Priority of serial command
        public DateTime data;   // Date of command
        public string from;     // That form send the comand
        public string cmd;      // the command (request)
        public int status;      // status of command
    }

    private Queue<s_fifoObj> q_fifoObj;

1 个答案:

答案 0 :(得分:1)

您是否有理由使用套接字来连接子表单和连接处理程序之间的通信?您可以在父MDI窗口中创建连接处理程序的实例,然后将其传递给子窗口构造函数。或者,您可以将连接处理程序设为singleton

你需要队列吗?如果您的应用程序是单线程的,那么您不需要队列。如果您使用多个线程/任务或使用异步函数,那么FIFO将起作用,但一定要确保System.Collections.Concurrent中的ConcurrentQueue或其他线程安全的东西。