private void CloseSocketWhileReceiving(SocketAsyncEventArgs args, Exception exception)
        {
            Log.I.Warn($"{nameof(AsyncTcpConnection)}.{nameof(CloseSocketWhileReceiving)} Close Socket! with error");

            m_Receiving.TryDispose();
            if (args.UserToken is ReceiveContextData receiveCtx)
            {
                receiveCtx.Dispose();
                args.UserToken = null;
            }
            args.Dispose();
            m_OnReceiveError.Invoke(exception);
            Dispose();
        }
 private void CloseSocketWhileSending(SocketAsyncEventArgs args, Exception exception)
 {
     if (m_Sending.TryDispose())
     {
         args.Dispose();
         if (args.UserToken is SendContextData sendContextData)
         {
             sendContextData.Dispose();
         }
     }
     m_OnSendError?.Invoke(exception);
     Dispose();
 }