打开和读取/写入串行端口MOXA NPort的最大线程数

时间:2016-06-21 13:30:46

标签: c# multithreading serial-port

我正在使用Moxa Nport' s。它们创建了大约200个虚拟串行(COM)端口,并通过以太网连接到我的计算机。

我正在构建一个使用SerialPort类与设备通信的应用程序。

我的问题:是否有最多可以并行运行的线程来打开端口?当然要通过端口并行通信? 我需要考虑什么(RAM,交通等) 我可以安全地重复这个过程而不需要让我的电脑自行挂起。

我找到了this的答案,但它只对有关核心的计算操作有帮助。但它在虚拟串口方面的表现如何?

请与我分享你的知识和智慧......

1 个答案:

答案 0 :(得分:-1)

SerialPort每个端口只能打开一次。因此,在这种情况下,所有线程应该共享相同的SerialPort对象(可能是静态的)。如果您有多个端口,则每个线程可以在不同的端口上创建自己的SerialPort。最大线程数取决于每个线程所需的资源。 200个端口的200个线程一般非常合理。毕竟,I / O线程大部分时间都处于waiting(或blocked)状态。如果你想一次打开所有200个端口,我认为最好分批制作:并行启动20个线程,超时为500毫秒,然后是另外20个,......等等。创建200个同时与同一驱动程序通信的线程可能会导致问题,恕我直言