public SQLiteConnectionED(EDDSqlDbSelection?maindb = null, bool utctimeindicator = false, bool initializing = false, bool shortlived = true) : base(initializing) { bool locktaken = false; try { _schemaLock.EnterReadLock(); locktaken = true; // System.Threading.Monitor.Enter(monitor); //Console.WriteLine("Connection open " + System.Threading.Thread.CurrentThread.Name); DBFile = GetSQLiteDBFile(maindb ?? SQLiteDBClass.DefaultMainDatabase); _cn = SQLiteDBClass.CreateCN(); // Use the database selected by maindb as the 'main' database _cn.ConnectionString = "Data Source=" + DBFile + ";Pooling=true;"; if (utctimeindicator) // indicate treat dates as UTC. { _cn.ConnectionString += "DateTimeKind=Utc;"; } _transactionLock = new SQLiteTxnLockED <TConn>(); _cn.Open(); } catch { if (_transactionLock != null) { _transactionLock.Dispose(); } if (locktaken) { _schemaLock.ExitReadLock(); } throw; } }