【发布时间】:2016-03-07 13:52:35
【问题描述】:
我有一个管理多个大型项目集合的 .NET 应用程序。 每个项目都有一个“扫描时间”间隔(每 1 秒、每 5 秒、每分钟等,由用户定义)。 时间到了,项目需要运行一个内部方法,该方法可能会改变其状态并写入数据库。
目前的应用结构基本是:
每个集合都在不同的线程中进行管理,并且在每个线程中,每个循环都有一个并行的循环,遍历所有项目,并且对于每个项目,它检查是否已经过了足够的时间并且项目需要运行他的内部方法。
当一个或多个线程的集合很大时,这种方法会导致问题,其中许多项目的“扫描时间”很短。
因为它会遍历所有项目以找出需要更新的项目。
我想将结构更改为某种观察者模式。 我的想法是每个项目都将运行一个计时器并通知父线程它需要更新。 我看到有一个名为 Reactive Frameworks 的 .NET 库,但我不确定是否可以使用它。
欢迎任何其他关于如何改进当前流程的想法。
【问题讨论】:
-
由于这似乎相对超出了我的范围,我会尝试给出任何正式的答案,但对我来说,事件系统似乎是要走的路。该集合订阅每个项目的事件并在对象更新时接收通知。
-
Kilanny 写的内容让我意识到,让每个项目检查其状态并在超时时通知会非常昂贵
标签: c# .net vb.net multithreading parallel-processing