Ejemplo n.º 1
0
        private static void DeleteTimeout() {
            Debug.Assert(CleanInfo != null);

            DateTime limit = DateTime.UtcNow - kExpiredTime;
            CleanInfo.Count += 1;
            
            bool doClean = (CleanInfo.Count > kExpiredCount || CleanInfo.LastestCleanTime < limit);
            if (doClean == true)
            {
                #region Do Clean expired session objects.
                TransactionOptions opt = new TransactionOptions();
                opt.IsolationLevel = IsolationLevel.ReadCommitted;
                opt.Timeout = new TimeSpan(0, 0, 20);
                using (TransactionScope trans = new TransactionScope(TransactionScopeOption.Required, opt)) {
                    using (TTSessionDbContext db = new TTSessionDbContext())
                    {
                        TTSqlHelper<TTSession> helper = new TTSqlHelper<TTSession>(db);
                        string sql = "WHERE " + helper.ColumnNameOf(x => x.LastAccessTimeUTC) + " < {0}";
                        helper.Delete(sql, limit);

                        CleanInfo.Count = 0;
                        CleanInfo.LastestCleanTime = DateTime.UtcNow;

                        TTDbInfo dbInfo = db.DbInfos.Single(obj => obj.Key.Equals(TTDbInfo.CleanSessionInfo));
                        dbInfo.Save(CleanInfo);
                        db.SaveChanges();
                                                
                        trans.Complete();
                    }
                }
                #endregion
            }
        }
Ejemplo n.º 2
0
        protected virtual void Dispose(bool disposing) {
            if (this._isDisposed == true)
                return;

            if (disposing) {
                if (_db != null) {
                    _db.Dispose();
                    _db = null;
                }

                this._isDisposed = true;
            }
        }