定时器程序里事件如何定义
A类有个定时器,每隔1s扫描B类所有参数,并且每次定时器elapse时对B类的参数p进行自增(算个计数器),从0开始,1,2,3,4,……我想在参数p到达指定计数x的时候执行某方法(应该需要定义一个触发的事件E?),从而对C类进行相关操作
但是p到达哪些计数是未知的,随着程序进行会逐渐产生新的需要执行某方法的计数new x,所以不太可能在定时器elapse的时候判断 if(p==x) ,因为无法得知新值,不可能写一堆switch case来判断
所以我是不是该定义一个委托事件来处理?这样就有个监控啥的?
该如何定义?定义在哪儿?如何调用呢?
比如:
- C# code
public class A { public static A() { System.Timers.Timer aTimer = new System.Timers.Timer(); aTimer.Elapsed+=new ElapsedEventHandler(OnTimedEvent); aTimer.Interval=1000; aTimer.Enabled=true; } private static void OnTimedEvent(object source, ElapsedEventArgs e) { B.p++; // 如何定义事件来判断 p=x 时执行 C.SomeMethod() } } public static class B { public static int p; } public static class C { public static void SomeMethod() { } public static void New_x_Value() { // 随着程序进行,新x值产生,OnTimedEvent里p再次等于新x值时重新触发C.Somemethod() }
[解决办法]
- C# code
// 如何定义事件来判断 p=x 时执行 C.SomeMethod()public partial class B{ public int count = 0; public delegate void doSomeThings(); public event doSomeThings doEvent; public void AddCount(int then) { count++; if (count == then) { doEvent(); } }}