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); } }
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); } }