/// <summary>
        /// Send a message to the server
        /// </summary>
        /// <param name="message">The message to send.</param>
        /// <returns>true on success, false if the connection is fauled or an exception occurs</returns>
        public bool DispatchMessage(Message message)
        {
            try
            {
                if (!Faulted)
                {
                    if (message is MouseMoveMessage)
                    {
                        PerformanceMonitor.CurrentInstance.IncrementSendLag(1);
                    }
                    else if (message is MouseWheelMessage)
                    {
                        PerformanceMonitor.CurrentInstance.IncrementMouseWheelMsgCount(1);
                    }

                    ApplicationActivityMonitor.Instance.LastActivityTick = Environment.TickCount;
                    _queue.Enqueue(message);
                    return(true);
                }
            }
            catch (Exception ex)
            {
                HandleException(ex);
            }

            return(false);
        }
 public void Enqueue(Message msg)
 {
     lock (_syncLock)
     {
         _queue.Enqueue(msg);
         Monitor.Pulse(_syncLock);
     }
 }