日期:2014-05-18  浏览次数:20778 次

C#用同一个Timer同时实时的监测做两件事情,怎么做??
假如要对两台服务器进行同时实时监控,一个timer1负责监控硬盘信息,timer2负责监控网络信息,而两台服务器是否要监测硬盘、网络信息是可以任意配置的,如果一个服务器配置监控了硬盘信息和网络信息,另一台服务器只监控网络信息不监控硬盘信息,这时timer要同时实时的做两件事启动Timer1的Tick事件监控服务器1,而同时又要服务器2又要求Tick事件不能启动,怎么做到???

------解决方案--------------------
用System.Threading.Timer类,创建两个线程来运行各自的timer,分别给两个timer传递一个参数来控制它是否检控网络信息和硬盘信息,
------解决方案--------------------
如果用 System.Timers.Timer 的话,这个 timer 类本身算不算已经是开了另一个线程来实现监控了,因此不需要再创建一个类来启动这个 timer?

另外那么多线程都需要反馈信息的话,不 Control.CheckForIllegalCrossThreadCalls = false; 的话要保证不冲突还挺麻烦吧?
------解决方案--------------------
不要随便设置Control.CheckForIllegalCrossThreadCalls = false这个

------解决方案--------------------
探讨

不要随便设置Control.CheckForIllegalCrossThreadCalls = false这个