首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

定时器程序里事件怎么定义

2012-04-17 
定时器程序里事件如何定义A类有个定时器,每隔1s扫描B类所有参数,并且每次定时器elapse时对B类的参数p进行

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

热点排行