任务是做一个通过SNMP监控硬件的程序(别问为什么,我自己都惊呆了)我打算用c#和SNMP lex库。可以监控很多铁片,一百片,甚至更多。每一块铁都有一堆参数用于监控。
想这样做。每个参数的监控在一个无限循环中的单独任务中启动,并且每 5 秒轮询一次参数。
看起来很可怕,因为 20 个参数的 100 块铁,一共 2000 个无限循环的任务。
建议如何最好地解决问题?
任务是做一个通过SNMP监控硬件的程序(别问为什么,我自己都惊呆了)我打算用c#和SNMP lex库。可以监控很多铁片,一百片,甚至更多。每一块铁都有一堆参数用于监控。
想这样做。每个参数的监控在一个无限循环中的单独任务中启动,并且每 5 秒轮询一次参数。
看起来很可怕,因为 20 个参数的 100 块铁,一共 2000 个无限循环的任务。
建议如何最好地解决问题?
假设您将异步请求信息。
例如,所以
我假设请求需要 1 秒。现在我们将为特定设备请求 20 个参数
一切似乎都很简单。请求 100 台设备
现在,如何组织一个循环?我们可能应该有一个循环的取消令牌并对其计时,以便循环每 5 秒运行一次,但在处理先前的请求之后。
我在控制台中运行了 15 秒
我得到结果
因此,如果请求在不到 5 秒(总共)内完成,那么它们会持续每 5 秒被请求一次。
您可以利用System.Reactive反应式扩展
一个关于如何使用参数监视
IObservable
而不是Dictionary
参数的小示例,您可以创建一个单独的类。