/// <summary>
        /// Produce un evento
        /// </summary>
        /// <param name="eventType">el tipo del evento, un valor de CommunicationEvent</param>
        /// <param name="param">el parametro del evento</param>
        private void produceEvent(Int32 eventType, Object param)
        {
            if (eventConsumerStarted)
            {
                switch (eventType)
                {
                case CommunicationEvent.ADDUSER:
                {
                    if (addUserEvent != null)
                    {
                        eventQueuePC.put(new Event(addUserEvent, param));
                    }
                    break;
                }

                case CommunicationEvent.CONNECT:
                {
                    if (connectEvent != null)
                    {
                        eventQueuePC.put(new Event(connectEvent, param));
                    }
                    break;
                }

                case CommunicationEvent.CONNECTING:
                {
                    if (connectingEvent != null)
                    {
                        eventQueuePC.put(new Event(connectingEvent, param));
                    }
                    break;
                }

                case CommunicationEvent.DISCONNECT:
                {
                    if (disconnectEvent != null)
                    {
                        eventQueuePC.put(new Event(disconnectEvent, param));
                    }
                    break;
                }

                case CommunicationEvent.DISCONNECTING:
                {
                    if (disconnectingEvent != null)
                    {
                        eventQueuePC.put(new Event(disconnectingEvent, param));
                    }
                    break;
                }

                case CommunicationEvent.ERRORMESSAGE:
                {
                    if (errorMessageEvent != null)
                    {
                        eventQueuePC.put(new Event(errorMessageEvent, param));
                    }
                    break;
                }

                case CommunicationEvent.EXCEPTION:
                {
                    if (exceptionEvent != null)
                    {
                        eventQueuePC.put(new Event(exceptionEvent, param));
                    }
                    break;
                }

                case CommunicationEvent.NETINFORMATION:
                {
                    if (netInformationEvent != null)
                    {
                        eventQueuePC.put(new Event(netInformationEvent, param));
                    }
                    break;
                }

                case CommunicationEvent.PROCESSMESSAGE:
                {
                    if (processMessageEvent != null)
                    {
                        eventQueuePC.put(new Event(processMessageEvent, param));
                    }
                    break;
                }

                case CommunicationEvent.RECONNECTING:
                {
                    if (reconnectingEvent != null)
                    {
                        eventQueuePC.put(new Event(reconnectingEvent, param));
                    }
                    break;
                }

                case CommunicationEvent.REFRESHLOCALUSER:
                {
                    if (refreshLocalUserEvent != null)
                    {
                        eventQueuePC.put(new Event(refreshLocalUserEvent, param));
                    }
                    break;
                }

                case CommunicationEvent.REFRESHUSER:
                {
                    if (refreshUserEvent != null)
                    {
                        eventQueuePC.put(new Event(refreshUserEvent, param));
                    }
                    break;
                }

                case CommunicationEvent.REMOVEUSER:
                {
                    if (removeUserEvent != null)
                    {
                        eventQueuePC.put(new Event(removeUserEvent, param));
                    }
                    break;
                }
                }
            }
        }