Пример #1
0
        public DatabaseSession CreateDatabaseSession(string databasename)
        {
            lock (LockedObject)
            {
                DatabaseSession newsession    = new DatabaseSession(databasename);
                Thread          curthread     = Thread.CurrentThread;
                ThreadManager   threadmanager = null;

                if (ThreadManagerDict.ContainsKey(curthread))
                {
                    threadmanager = ThreadManagerDict[curthread];
                }
                else
                {
                    threadmanager = new ThreadManager(curthread);
                    ThreadManagerDict.Add(curthread, threadmanager);
                }

                threadmanager.DatabaseSessionStack.Push(newsession);
                return(newsession);
            }
        }
Пример #2
0
        public DatabaseSession RemoveCurrentDatabaseSession()
        {
            lock (LockedObject)
            {
                DatabaseSession databasesession = null;

                ThreadManager threadmanager = CurrentThreadManager;
                if (threadmanager != null)
                {
                    if (threadmanager.DatabaseSessionStack.Count > 0)
                    {
                        databasesession = threadmanager.DatabaseSessionStack.Pop();
                    }

                    if (threadmanager.DatabaseSessionStack.Count == 0)
                    {
                        ThreadManagerDict.Remove(threadmanager.Thread);
                    }
                }

                return(databasesession);
            }
        }