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



我使用带有串行函数的 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;

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

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

最新更新