Amnesia.Session.LockConnection C# (CSharp) Method

LockConnection() public static method

Because session connections can be shared across threads access to them must be synchronized. For normal connections that are not part of a distributed transaction no locking is performed for better performance.
public static LockConnection ( IDbConnection connection ) : IDisposable
connection IDbConnection
return IDisposable
        public static IDisposable LockConnection(IDbConnection connection)
        {
            if(connections.Count == 0)
                return UndoableAction.Null;

            lock (connections)
            {
                if (!(connection is AmnesiaDbConnection) || !connections.Values.Contains((AmnesiaDbConnection)connection))
                    return UndoableAction.Null;
            }

            Monitor.Enter(connection);

            return new UndoableAction(delegate
            {
                Monitor.Exit(connection);
            });
        }