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

定时器程序里事件如何定义
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();
        }
    }
}