C# event handling (compared to Java)

后端 未结 9 707
离开以前
离开以前 2020-12-23 23:23

I am currently having a hardtime understanding and implementing events in C# using delagates. I am used to the Java way of doing things:

  1. Define an interface f
9条回答
  •  青春惊慌失措
    2020-12-24 00:18

    You'll have to define a single delegate for that

    public delegate void ComputerEvent(object sender, ComputerEventArgs e);
    

    ComputerEventArgs would be defined like this:

    public class ComputerEventArgs : EventArgs
    {
        // TODO wrap in properties
        public Computer computer;
        public Exception error;
    
        public ComputerEventArgs(Computer aComputer, Exception anError)
        {
            computer = aComputer;
            error = anError;
        }
    
        public ComputerEventArgs(Computer aComputer) : this(aComputer, null)
        {
        }
    }
    

    The class that fires the events would have these:

    public YourClass
    {
        ...
        public event ComputerEvent ComputerStarted;
        public event ComputerEvent ComputerStopped;
        public event ComputerEvent ComputerReset;
        public event ComputerEvent ComputerError;
        ...
    }
    

    This is how you assign handlers to the events:

    YourClass obj = new YourClass();
    obj.ComputerStarted += new ComputerEvent(your_computer_started_handler);
    

    Your handler is:

    private void ComputerStartedEventHandler(object sender, ComputerEventArgs e)
    {
       // do your thing.
    }
    

提交回复
热议问题