Changeset 1155 for trunk/sources/HeuristicLab.Hive.Server.ADODataAccess
- Timestamp:
- 01/18/09 13:03:12 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/CachedDataAdapter.cs ¶
r1152 r1155 41 41 private static bool cacheFilled = false; 42 42 43 private static ReaderWriterLock cacheLock =44 new ReaderWriterLock ();43 private static ReaderWriterLockSlim cacheLock = 44 new ReaderWriterLockSlim(); 45 45 46 46 protected DataTable dataTable = … … 51 51 52 52 protected CachedDataAdapter() { 53 cacheLock. AcquireWriterLock(Timeout.Infinite);53 cacheLock.EnterWriteLock(); 54 54 55 55 if (!cacheFilled) { … … 58 58 } 59 59 60 cacheLock. ReleaseWriterLock();60 cacheLock.ExitWriteLock(); 61 61 62 62 ServiceLocator.GetTransactionManager().OnUpdate += … … 66 66 protected virtual RowT FindSingleRow(Selector dbSelector, 67 67 Selector cacheSelector) { 68 cacheLock. AcquireReaderLock(Timeout.Infinite);68 cacheLock.EnterReadLock(); 69 69 70 70 RowT row = … … 77 77 } 78 78 79 cacheLock. ReleaseReaderLock();79 cacheLock.ExitReadLock(); 80 80 81 81 return row; … … 84 84 protected virtual IEnumerable<RowT> FindMultipleRows(Selector dbSelector, 85 85 Selector cacheSelector) { 86 cacheLock. AcquireReaderLock(Timeout.Infinite);86 cacheLock.EnterReadLock(); 87 87 88 88 IList<RowT> result = … … 98 98 } 99 99 100 cacheLock. ReleaseReaderLock();100 cacheLock.ExitReadLock(); 101 101 102 102 return result; … … 107 107 ObjT obj = default(ObjT); 108 108 109 cacheLock. AcquireReaderLock(Timeout.Infinite);109 cacheLock.EnterReadLock(); 110 110 111 111 RowT row = FindSingleRow(dbSelector, cacheSelector); … … 116 116 } 117 117 118 cacheLock. ReleaseReaderLock();118 cacheLock.ExitReadLock(); 119 119 120 120 return obj; … … 123 123 protected virtual ICollection<ObjT> FindMultiple(Selector dbSelector, 124 124 Selector cacheSelector) { 125 cacheLock. AcquireReaderLock(Timeout.Infinite);125 cacheLock.EnterReadLock(); 126 126 127 127 ICollection<ObjT> result = … … 131 131 FindMultiple(dbSelector); 132 132 133 cacheLock. ReleaseReaderLock();133 cacheLock.ExitReadLock(); 134 134 135 135 foreach (ObjT obj in resultDb) { … … 156 156 } 157 157 158 cacheLock. AcquireReaderLock(Timeout.Infinite);158 cacheLock.EnterReadLock(); 159 159 160 160 this.SynchronizeWithDb(); 161 161 162 cacheLock. ReleaseReaderLock();162 cacheLock.ExitReadLock(); 163 163 } 164 164 … … 171 171 return false; 172 172 else { 173 cacheLock. AcquireReaderLock(Timeout.Infinite);173 cacheLock.EnterReadLock(); 174 174 175 175 bool cached = FindCachedById((long)row[row.Table.PrimaryKey[0]]) != null; 176 176 177 cacheLock. ReleaseReaderLock();177 cacheLock.ExitReadLock(); 178 178 179 179 return cached; … … 182 182 183 183 protected override RowT GetRowById(long id) { 184 cacheLock. AcquireReaderLock(Timeout.Infinite);184 cacheLock.EnterReadLock(); 185 185 186 186 RowT row = … … 194 194 }); 195 195 196 cacheLock. ReleaseReaderLock();196 cacheLock.ExitReadLock(); 197 197 198 198 return row; … … 200 200 201 201 private void AddToCache(RowT row) { 202 cacheLock. AcquireWriterLock(Timeout.Infinite);202 cacheLock.EnterWriteLock(); 203 203 204 204 cache.ImportRow(row); 205 205 row.Table.Rows.Remove(row); 206 206 207 cacheLock. ReleaseWriterLock();207 cacheLock.ExitWriteLock(); 208 208 } 209 209 210 210 private RowT AddToCache(ObjT obj) { 211 cacheLock. AcquireWriterLock(Timeout.Infinite);211 cacheLock.EnterWriteLock(); 212 212 213 213 RowT row = InsertNewRowInCache(obj); 214 214 215 cacheLock. ReleaseWriterLock();215 cacheLock.ExitWriteLock(); 216 216 217 217 return row; … … 219 219 220 220 private void RemoveRowFromCache(RowT row) { 221 cacheLock. AcquireWriterLock(Timeout.Infinite);221 cacheLock.EnterWriteLock(); 222 222 223 223 dataTable.ImportRow(row); 224 224 cache.Rows.Remove(row); 225 225 226 cacheLock. ReleaseWriterLock();226 cacheLock.ExitWriteLock(); 227 227 228 228 UpdateRow(row);
Note: See TracChangeset
for help on using the changeset viewer.