Subscribing Methods to Events from another Class in C#

Viewed 48

Hello swarm intelligence!

Imagine the following:

We've created a rudimentary server / client software to send Events through a local network to invoke Methods in another Program. This is done via an array of Bytes build like: [sender][receiver][messageCode][eventObj(serialized)]

private static byte[] buildByteArray(int Receiver, int Message, CustomEventArgs e = null)
{
  byte[] sender   = BitConverter.GetBytes(HANDSHAKE);
  byte[] receiver = BitConverter.GetBytes(Receiver);
  byte[] message  = BitConverter.GetBytes(Message);
  byte[] obj      = ParseEventToBinary(e);

  IEnumerable<byte> rv = sender.Concat(receiver).Concat(message).Concat(obj);
  return rv.ToArray();
} 

At the receiving end, we got an Array of Type EventHandler

private static EventHandler<CustomEventArgs>[] EventHandlers = new EventHandler<CustomEventArgs>[2000];

Our problem is, Class A only needs to subscribe to the handler, but Class B shall handle all the events AND trigger them.

Class A:

triggerEvent =  client.getHandler(111);
triggerEvent += eventHandlerMethodeOne;

Class B:

public EventHandler<CustomEventArgs> getHandler(int code)
{
    if (EventHandlers[code] != null)
    {
        return EventHandlers[code];
    }
    else
    {
        EventHandlers[code] += 'eventHandlerMethodeOne';
        return EventHandlers[code];
    }
}

Imagine Class A subscribing to EventHandlers and loading Class B which is conncting to the Server and waiting for input. The following 'messageCode' is the index of the previosly created EventHandler. EventHandlers[messageCode] should now

be equal to triggerEvent += eventHandlerMethodeOne;

int messageCode = msgCode[0] + msgCode[1] + msgCode[2] + msgCode[3];
if (EventHandlers[messageCode] != null)
{
    EventHandler<CustomEventArgs> trigger = EventHandlers[messageCode];
    trigger(null, retreiveData(eventArgs));
}
else
{
    SendErrorResponse(sender, 404, new CustomEventArgs());
}

I hope any of you understands what im trying to say..

Question: What do I have to change that the event gets triggerd?

Thanks for your attention!

Edit: Debugging the Code does not bring anything particular to mind.

0 Answers
Related