public static TClientInfo getClient(String host, int port, Object clientClass, Object protocolClass)
        {
            TClientInfo aInfo = fastGetClient(host, port, clientClass);

            if (aInfo != null)
            {
                //Console.WriteLine("I1");
                return(aInfo);
            }
            else
            {
                //Console.WriteLine("I2");
                aInfo = new TClientInfo(host, port, clientClass, protocolClass);
                return(aInfo);
            }
        }
        public static void releaseClient(TClientInfo aClientInfo)
        {
            lock (syncLock)
            {
                String aKey = getKey(aClientInfo.m_host, aClientInfo.m_port, aClientInfo.m_clientClass);
                Stack <TClientInfo> aContainer = m_clients.GetValueOrDefault(aKey);
                if (aContainer == null)
                {
                    //Console.WriteLine("I5");
                    aContainer = new Stack <TClientInfo>();
                    aContainer.Push(aClientInfo);
                    m_clients.Add(aKey, aContainer);
                }
                else
                {
                    //Console.WriteLine("I6");
                    aContainer.Push(aClientInfo);
                }

                //Console.WriteLine("aContainer.Count: " + aContainer.Count);
            }
        }