예제 #1
0
        private void Commit()
        {
            //aResultsを破棄する
            if (_aResults != null)
            {
                _aResults.Dispose();
                _aResults = null;
            }

            //トランザクションを終了する

            if (_aDbTransaction != null)
            {
                if (!_aResultsCache.IsNullCache && _updatedTables.Count > 0)
                {
                    try {
                        _aResultsCache.AcquireWriterLock();
                        //ロック対象処理 START
                        _aDbTransaction.Commit();
                        _aDbTransaction.Dispose();
                        _aResultsCache.Remove(_updatedTables);
                        //ロック対象処理 END
                    } finally {
                        _aResultsCache.ReleaseWriterLock();
                    }
                }
                else
                {
                    //キャッシュの更新が発生しない場合はロックしない
                    _aDbTransaction.Commit();
                    _aDbTransaction.Dispose();
                }

                //DbTransactionを解放する
                _h_DbTransaction.Free();
                _aDbTransaction = null;
                Debug.WriteLineIf(_debugPrint, "COMMIT" + Environment.NewLine);
            }
        }
예제 #2
0
 public void Remove(IEnumerable <string> updateTables)
 {
     _resultsCache.Remove(updateTables);
 }