private void OnMessage(object data) { Debug.WriteLine("Message"); string packedMessage = data as string; if (packedMessage != null) { try { bool handled = false; Message message = MessageUtils.GetMessage(packedMessage); MessageKey messageKey = MessageUtils.GetMessageKey(packedMessage); if (messageKey != null) { lock (this.handlersLock) { EventHandler <MessageEventArgs> handler; if (this.handlers.TryGetValue(messageKey, out handler)) { handler(this, new MessageEventArgs((Message)message.Clone())); handled = true; } } } if (!handled) { this.OnNonHandledMessage(new MessageEventArgs((Message)message.Clone())); Debug.WriteLine(message); } } catch (MalformedMessageException ex) { Debug.WriteLine(ex); } } }