private void ReceiveOutsidePacket(byte[] receivedPacket) { SignalMessage receivedMessage = ByteToSignalMessage(receivedPacket); Delegate_ReceiveOutsideMessage receiveMessage = null; switch (receivedMessage.General_DestinationModule) { case "CC": receiveMessage = new Delegate_ReceiveOutsideMessage(_moduleCC.ReceiveMessageFromPC); break; case "RC": receiveMessage = new Delegate_ReceiveOutsideMessage(_moduleRC.ReceiveMessageFromPC); break; case "LRM": receiveMessage = new Delegate_ReceiveOutsideMessage(_moduleLRM.ReceiveMessageFromPC); break; default: SignallingNodeDeviceClass.MakeSignallingLog("PC", "ERROR - Destination module unknown."); break; } if (receiveMessage != null) { receiveMessage.BeginInvoke(receivedMessage, new AsyncCallback(ReceiveOutsideMessageCallback), null); } }
private void ReceiveOutsideMessageCallback(IAsyncResult async) { //tutaj nie chcemy nic robić, po prostu zasoby mają się zwolnić //metoda wywoływana po wyjściu z metody ReceiveMessageFromPC AsyncResult ar = (AsyncResult)async; Delegate_ReceiveOutsideMessage del = (Delegate_ReceiveOutsideMessage)ar.AsyncDelegate; del.EndInvoke(async); }