我正在做一个需要与 20 个小型计算机板通信的项目。我将需要检查他们的连接,他们还会向我返回一些数据。所以我的目标是为这些板建立一个控制/监控系统。
我将使用 Visual Studio 2010 和 C# WPF。
我的想法/计划是这样的:
在主线程上:
控制窗口只有一个,所以会创建一个主线程,主要是更新要显示的数据。每块板的数据会以1s的时间间隔显示和刷新。数据源将来自主线程将查找最新数据的数据库(我还没有决定使用哪种数据库)。
控制窗口上也会有控制按钮。我已经有一个 .dll 库,所以我只需要调用里面的函数来指导板子采取行动(通过启动另一个线程)。
将有两种服务:
(定时器服务)一个是预定的定时器,用于在特定时间打开/关闭电路板。用户将能够更改开/关时间。它将从数据库中读取以获取开/关时间。
(连接服务)另一位负责每隔 30 秒或更短时间从董事会询问和接收信息/状态。工作包括通过互联网与板子连接,请求数据,接收数据,然后将数据写入数据库。如果互联网连接失败,还写下抛出的异常。
我的问题:
1)对于连接服务,我想知道我是否应该启动 20 个线程来执行此操作,每个连接到板一个线程。因为如果仅由一个线程进行连接,则下一个板连接必须等待第一个连接完成,这可能会增加 1-2 分钟才能结束整个过程。所以我需要大约 20 - 40 分钟才能取回所有数据。但是如果我将连接分离到 20 个线程,会不会对性能产生很大影响?由于 20 个线程永远不会死掉,它会尽可能每 30 秒请求一次数据。此外,这是否意味着我必须拥有 20 个数据库,因为如果同时写入 20 个线程,它会与数据库发生冲突?
2)为了每1秒更新一次主线程上的数据显示,我是否也应该启动一个服务来做到这一点?并且由于连接服务也在访问同一个数据库,这会与数据库发生冲突吗?
未来将有100多个板进行控制和监控,所以我想让程序尽可能轻。
非常感谢!非常感谢评论和想法!