protected void Write(Tcp_Message m)
        {
            try
            {
                using (AesCryptoServiceProvider aes = new AesCryptoServiceProvider())
                {
                    aes.KeySize = _MySessionKey.Length * 8;
                    aes.Key     = _MySessionKey;
                    aes.GenerateIV();
                    aes.Mode    = CipherMode.CBC;
                    aes.Padding = PaddingMode.PKCS7;

                    using (ICryptoTransform encrypt = aes.CreateEncryptor())
                    {
                        var sendbuffer    = Tcp_Message.ToBuffer(m);
                        var headermessage = new MessageObject();
                        headermessage.Client        = this;
                        headermessage.MessageBuffer = headermessage.HeaderBuffer;
                        var datamessage = new MessageObject();
                        datamessage.Client = this;

                        datamessage.MessageBuffer = encrypt.TransformFinalBlock(sendbuffer, 0, sendbuffer.Length);


                        Buffer.BlockCopy(aes.IV, 0, headermessage.MessageBuffer, 0, aes.IV.Length);

                        var len = BitConverter.GetBytes(datamessage.MessageBuffer.Length);
                        Buffer.BlockCopy(len, 0, headermessage.MessageBuffer, aes.IV.Length, len.Length);

                        //  Debug.WriteLine("Sending ");
                        //   _SendResetEvent.WaitOne();

                        Client.BeginSend(headermessage.MessageBuffer, 0, headermessage.MessageBuffer.Length, 0, new AsyncCallback(SendMessageCallback), headermessage);
                        Client.BeginSend(datamessage.MessageBuffer, 0, datamessage.MessageBuffer.Length, 0, new AsyncCallback(SendMessageCallback), datamessage);
                    }
                }
            } catch (Exception e)
            {
                //  _SendResetEvent.Set();//just in case another thread was waiting
                if (DisconnectEvent != null)
                {
                    DisconnectEvent(this);
                }
                Debug.WriteLine(e.Message);
            }
        }