public static void CreateSystemsTableIndexes() { using (var schemalock = new SchemaLock()) { CreateSystemsTableIndexesNoLock(); } }
public static void ReplaceSystemsTable() // PERFORM AFTER TEMP SYSTEM TABLE UPDATED { using (var slock = new SchemaLock()) { using (var conn = new SQLiteConnectionSystem()) { DropSystemsTableIndexes(); using (var txn = conn.BeginTransaction()) { ExecuteQuery(conn, "DROP TABLE IF EXISTS Systems"); ExecuteQuery(conn, "DROP TABLE IF EXISTS EdsmSystems"); ExecuteQuery(conn, "DROP TABLE IF EXISTS SystemNames"); ExecuteQuery(conn, "ALTER TABLE EdsmSystems_temp RENAME TO EdsmSystems"); ExecuteQuery(conn, "ALTER TABLE SystemNames_temp RENAME TO SystemNames"); txn.Commit(); } ExecuteQuery(conn, "VACUUM"); CreateSystemsTableIndexesNoLock(); } } }
protected static void InitializeIfNeeded(Action initializer) { if (!_initialized) { int cur = Interlocked.Increment(ref _initsem); if (cur == 1) { using (var slock = new SchemaLock()) { _initbarrier.Set(); initializer(); _initialized = true; } } if (!_initialized) { _initbarrier.WaitOne(); } } }
protected static void InitializeIfNeeded(Action initializer) // call this to get your initialiser called and to let it know its been initialised. { if (!initialized) { int cur = Interlocked.Increment(ref initsem); if (cur == 1) { using (var slock = new SchemaLock()) { initbarrier.Set(); initialized = true; // stop any call backs thru this causing it to see it again initializer(); } } if (!initialized) { initbarrier.WaitOne(); } } }