public void Send(string message, object data)
 {
     lock (_sendLock)
     {
         NetworkDataPacket packet = new NetworkDataPacket(message, data);
         _sendQueue.Add(Formating.ObjectToByteArray(packet));
     }
 }
        public void Receive(out string[] message, out object[] data)
        {
            lock (_receiveLock)
            {
                int lenght = _receiveQueue.Count;
                message = new string[lenght];
                data    = new object[lenght];

                for (int i = 0; i < lenght; i++)
                {
                    if (_receiveQueue[0] != null && _receiveQueue[0].Length > 0)
                    {
                        NetworkDataPacket packet = (NetworkDataPacket)Formating.ByteArrayToObject(_receiveQueue[0]);
                        message[i] = packet.message;
                        data[i]    = packet.data;
                        _receiveQueue.RemoveAt(0);
                    }
                    else
                    {
                        _receiveQueue.RemoveAt(0);
                    }
                }
            }
        }