public void SendMsg <T>(object msg, DelegateRecvHandler handler, int timeout = 0) where T : new()
        {
            System.Reflection.FieldInfo fi = typeof(T).GetField("MSG_ID");
            int ansMsgID = (int)fi.GetValue(null);

            RegisterHandler(ansMsgID, handler, timeout);
            SendMsg(msg);
        }
        public void RegisterHandler(int msgID, DelegateRecvHandler handler, int timeout = 0)
        {
            HandlerContainer container = new HandlerContainer();

            if (0 < timeout)
            {
                container.timer           = new System.Timers.Timer();
                container.timer.Interval  = timeout * 1000;
                container.timer.AutoReset = false;
                container.timer.Elapsed  += delegate { HandlerContainer.Timeout(this); };
                container.timer.Start();
            }
            container.handler    = handler;
            _dictHandler [msgID] = container;
        }