0

情况:

我需要在我的 ASP.NET Core 项目中创建某种通过 Modbus TCP/IP 进行通信的控制部分。

与 Modbus 通信正常,但我需要永久读取一些 Modbus 地址,并且需要设置它们的间隔。我在db中有这样的结构。

我现在有一个名为 CommunicationRepository 的单例,它是这个协议的控制器,并且具有从模块读取、写入模块、具有来自模块的数据结构等的方法,并创建 CommunicationRunners。

通信库图

CommunicationRunner 可以等待间隔时间过去,然后从 CommunicationRepository 触发委托 - 然后读取特定的 Modbus 地址。

CommunicationRunner 图

问题: 现在它是由异步完成的,这会减慢其他所有事情的速度——在页面中导航、来自 web api 的响应等。当然,这个问题可以在很小的时间间隔内(例如 10 毫秒)被识别出来。

我怎样才能使它更稳定,无窃听?我必须使用线程吗?如果,那么究竟如何?

我会很感激一些代码示例。

谢谢你,看看图片。

4

0 回答 0