コード例 #1
0
        internal TdsParserStateObject GetSession(object owner)
        {
            TdsParserStateObject session;

            lock (_cache)
            {
                if (IsDisposed)
                {
                    throw ADP.ClosedConnectionError();
                }
                else if (_freeStateObjectCount > 0)
                {
                    // Free state object - grab it
                    _freeStateObjectCount--;
                    session = _freeStateObjects[_freeStateObjectCount];
                    _freeStateObjects[_freeStateObjectCount] = null;
                    Debug.Assert(session != null, "There was a null session in the free session list?");
                }
                else
                {
                    // No free objects, create a new one
                    session = _parser.CreateSession();
                    SqlClientEventSource.Log.TryAdvancedTraceEvent("<sc.TdsParserSessionPool.CreateSession|ADV> {0} adding session {1} to pool", ObjectID, session.ObjectID);

                    _cache.Add(session);
                    _cachedCount = _cache.Count;
                }

                session.Activate(owner);
            }
            SqlClientEventSource.Log.TryAdvancedTraceEvent("<sc.TdsParserSessionPool.GetSession|ADV> {0} using session {1}", ObjectID, session.ObjectID);
            return(session);
        }
コード例 #2
0
        internal TdsParserStateObject GetSession(object owner)
        {
            TdsParserStateObject session;

            lock (_cache)
            {
                if (IsDisposed)
                {
                    throw ADP.ClosedConnectionError();
                }
                else if (_freeStateObjectCount > 0)
                {
                    // Free state object - grab it
                    _freeStateObjectCount--;
                    session = _freeStateObjects[_freeStateObjectCount];
                    _freeStateObjects[_freeStateObjectCount] = null;
                    Debug.Assert(session != null, "There was a null session in the free session list?");
                }
                else
                {
                    // No free objects, create a new one
                    session = _parser.CreateSession();


                    _cache.Add(session);
                    _cachedCount = _cache.Count;
                }

                session.Activate(owner);
            }


            return(session);
        }
コード例 #3
0
        internal TdsParserStateObject GetSession(object owner)
        {
            TdsParserStateObject session;

            lock (_cache)
            {
                if (IsDisposed)
                {
                    throw ADP.ClosedConnectionError();
                }
                else if (_freeStateObjectCount > 0)
                {
                    // Free state object - grab it
                    _freeStateObjectCount--;
                    session = _freeStateObjects[_freeStateObjectCount];
                    _freeStateObjects[_freeStateObjectCount] = null;
                    Debug.Assert(session != null, "There was a null session in the free session list?");
                }
                else
                {
                    // No free objects, create a new one
                    session = _parser.CreateSession();

                    if (Bid.AdvancedOn)
                    {
                        Bid.Trace("<sc.TdsParserSessionPool.CreateSession|ADV> %d# adding session %d to pool\n", ObjectID, session.ObjectID);
                    }

                    _cache.Add(session);
                    _cachedCount = _cache.Count;
                }

                session.Activate(owner);
            }

            if (Bid.AdvancedOn)
            {
                Bid.Trace("<sc.TdsParserSessionPool.GetSession|ADV> %d# using session %d\n", ObjectID, session.ObjectID);
            }

            return(session);
        }