日期:2014-05-17  浏览次数:20886 次

求个思路,实时监控
准备做一个实时监控程序,有些方没搞懂,请教一下大家
基本分三个模块。
1。界面,根据一些全局变量来更新界面(显示图形或播放动画)1秒一次
2。读取数据库来更新这些全局变量,1秒一次,这个肯定是读不完的,所以我的timer.stop和timer.start
3。更新数据库,是一个短信接口,需要自己手动查看新短信,然后更新到数据库,1秒一次。附带断线自动重新连接得十几秒。
按我这个思路,就要3个timer,可是据说winform的timer会相互影响,虽然也可以用一个timer,但一轮下来得好几秒钟,遇到断线更长,而且不附合设计,在网上了解了一下,好像有多线程+timer,不知道能不能实现?多线程接触得很少,不太会,请教一下大家我的设计对不对,有没有更好的思路
实时监控

------解决方案--------------------
建议使用两个线程,主线程负责界面的绘制和响应,数据线程负责读取短信,更新数据库、更新全局变量。
由于主线程和数据线程可能会同时访问一些资源,必要的地方可以使用Mutex进行保护

PS: Windows任务管理器不也是1秒刷新1次吗,2L不要瞎吐槽
------解决方案--------------------
无论是多线程还是定时器,都不能超越硬件的性能极限。
------解决方案--------------------
引用:
无论是多线程还是定时器,都不能超越硬件的性能极限。


现在运行在3GHz频率的新款x86处理器极限可没那么低哦,用QueryPerformanceCounter实现0.1ms级别的定时也不困难
------解决方案--------------------
引用:
Quote: 引用:

无论是多线程还是定时器,都不能超越硬件的性能极限。


现在运行在3GHz频率的新款x86处理器极限可没那么低哦,用QueryPerformanceCounter实现0.1ms级别的定时也不困难


硬件的极限不等于CPU的极限。
------解决方案--------------------
无论是多线程还是定时器,都不能超越lz的逻辑思维上的所谓“1秒种一更新”的局限性。

比如说,也许有人没有实际做过的时候非常不注意“如果让1秒钟才刷新一次QQ即使聊天消息”会怎么样?如果你找两个人在办公室里测试,这两个人肯定会说“你这个即使聊天软件是迄今为止最滥的了!”。因为1秒更新一次的QQ界面,给人就是这个感觉。

你所监视的消息,如果到来了,就应该显示。而如果没有到来,你去轮询干什么?

为什么会出现“1秒中更新一次的QQ界面”?很明显,除了“轮询数据库”这一种编程,就不会双向通讯程序编程了。这才是决定这个设计的结果的主要因素。
------解决方案--------------------
我们在设计各种所谓的“实时监控”之类的说法的程序时,遇到了只会做课堂上的OA程序(甚至是只会做asp.net的OA程序)的数据库轮询的程序员,这才是这种项目失败的主要因素。
------解决方案--------------------

不解释