Exemplo n.º 1
0
 public void ExecuteWithDatabase(Action <SystemsDatabaseConnection> action, bool usetxnlock = false, SQLExtConnection.AccessMode mode = SQLExtConnection.AccessMode.Reader, int warnthreshold = 500)
 {
     Execute(() => ExecuteWithDatabaseInternal(action, usetxnlock, mode), warnthreshold: warnthreshold);
 }
Exemplo n.º 2
0
 public T ExecuteWithDatabase <T>(Func <SystemsDatabaseConnection, T> func, bool usetxnlock = false, SQLExtConnection.AccessMode mode = SQLExtConnection.AccessMode.Reader, int warnthreshold = 500)
 {
     return(Execute(() =>
     {
         T ret = default(T);
         ExecuteWithDatabaseInternal(db => ret = func(db), usetxnlock, mode);
         return ret;
     }, warnthreshold: warnthreshold));
 }
Exemplo n.º 3
0
        private void ExecuteWithDatabaseInternal(Action <SystemsDatabaseConnection> action, bool usetxnlock = false, SQLExtConnection.AccessMode mode = SQLExtConnection.AccessMode.Reader)
        {
            SQLExtTransactionLock <SQLiteConnectionSystem> tl = null;

            try
            {
                if (usetxnlock)
                {
                    tl = new SQLExtTransactionLock <SQLiteConnectionSystem>();
                    if (mode == SQLExtConnection.AccessMode.Reader)
                    {
                        tl.OpenReader();
                    }
                    else
                    {
                        tl.OpenWriter();
                    }
                }

                using (var conn = new SystemsDatabaseConnection(mode: mode))
                {
                    action(conn);
                }
            }
            finally
            {
                tl?.Dispose();
            }
        }