比如我的程序里有一个静态BOOL型变量,当这个BOOL型变量状态改变时程序自动去调用一个方法。这个BOOL型变量状态改变时间不固定。

解决方案 »

  1.   


    //写成属性。
    private bool _isChanged = false;
    public event Action<bool> StateChanged;
    public bool IsChanged
    {
        get
        {
            return _isChanged;
        }
        set
        {
            _isChanged = value;
            if(StateChanged != null) StateChanged(value);
        }
    }
      

  2.   

    然后注册xxxx.StateChanged += .....
      

  3.   

    public delegate void MyEventHandler(object source, MyEventArgs e);   
     public class MyEventArgs : EventArgs   
    {     
    private string EventInfo;      
    public MyEventArgs(string Text) {       EventInfo = Text;     }      
    public string GetInfo() {       return EventInfo;     }   }   
    public class MyClass   
    {     
    public event MyEventHandler OnMaximum;      
    private int i;    
     private int Maximum = 10;      
    public int MyValue     
    {       get { return i; }       
    set {if(value <= Maximum) { i = value;   }        
     else {          
      if(OnMaximum != null) {           
    OnMaximum(this, new MyEventArgs(value.ToString());          
    }         
    }       
    }     
    }   
    }    
    class Program   {    
     static void MaximumReached(object source, MyEventArgs e) {     
      Console.WriteLine(e.GetInfo());     }     
     static void Main(string[] args) {      
    MyClass MyObject = new MyClass();      
    MyObject.OnMaximum += new MyEventHandler(MaximumReached);       
    for(int x = 0; x <= 15; x++) {         
    MyObject.MyValue = x;       }       
    Console.ReadLine();    
     }   
    }
      

  4.   

    如果想简单的话
    public bool IsChanged
    {
        get
        {
            return _isChanged;
        }
        set
        {
            _isChanged = value;
            if(StateChanged != null) StateChanged(value);
            这里直接调用你的方法就可以了
        }
    }正则给你使用了事件,是基于假如你现在不知道 bool 变化之后,你将具体怎么操作,那么你就用事件