- Timestamp:
- 04/16/13 13:13:41 (11 years ago)
- Location:
- branches/OaaS
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/OaaS
- Property svn:ignore
-
old new 21 21 protoc.exe 22 22 _ReSharper.HeuristicLab 3.3 Tests 23 Google.ProtocolBuffers-2.4.1.473.dll 23 24 packages
-
- Property svn:mergeinfo changed
- Property svn:ignore
-
branches/OaaS/HeuristicLab.Clients.Hive/3.3/HiveTasks/HiveTask.cs
r7259 r9363 36 36 [Item("Hive Task", "Represents a hive task.")] 37 37 [StorableClass] 38 public class HiveTask : NamedItem, IItemTree<HiveTask> {38 public class HiveTask : NamedItem, IItemTree<HiveTask>, IDisposable { 39 39 protected static object locker = new object(); 40 40 protected ReaderWriterLockSlim childHiveTasksLock = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion); 41 protected ReaderWriterLockSlim itemTaskLock = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion); 41 42 42 43 public static new Image StaticItemImage { … … 66 67 set { 67 68 if (task != value) { 68 Deregister JobEvents();69 DeregisterTaskEvents(); 69 70 task = value; 70 Register JobEvents();71 RegisterTaskEvents(); 71 72 IsFinishedTaskDownloaded = false; 72 73 OnTaskChanged(); … … 83 84 set { 84 85 if (itemTask != null && syncTasksWithOptimizers) { 85 this.childHiveTasks.Clear(); 86 childHiveTasksLock.EnterWriteLock(); 87 try { 88 childHiveTasks.Clear(); 89 } 90 finally { childHiveTasksLock.ExitWriteLock(); } 86 91 } 87 92 if (itemTask != value) { 88 DergisterItemTaskEvents(); 89 itemTask = value; 90 RegisterItemTaskEvents(); 93 itemTaskLock.EnterWriteLock(); 94 try { 95 DeregisterItemTaskEvents(); 96 itemTask = value; 97 RegisterItemTaskEvents(); 98 } 99 finally { itemTaskLock.ExitWriteLock(); } 91 100 OnItemTaskChanged(); 92 101 IsFinishedTaskDownloaded = true; 93 102 } 103 94 104 } 95 105 } … … 167 177 this.childHiveTasks = new ItemList<HiveTask>(); 168 178 syncTasksWithOptimizers = true; 169 RegisterChildHive JobEvents();179 RegisterChildHiveTasksEvents(); 170 180 } 171 181 … … 188 198 this.childHiveTasks = new ItemList<HiveTask>(); 189 199 this.syncTasksWithOptimizers = true; 190 RegisterChildHive JobEvents();200 RegisterChildHiveTasksEvents(); 191 201 } 192 202 … … 216 226 } 217 227 } 218 protected virtual void Der gisterItemTaskEvents() {228 protected virtual void DeregisterItemTaskEvents() { 219 229 if (ItemTask != null) { 220 230 ItemTask.ComputeInParallelChanged -= new EventHandler(ItemJob_ComputeInParallelChanged); … … 223 233 } 224 234 225 protected virtual void RegisterChildHive JobEvents() {235 protected virtual void RegisterChildHiveTasksEvents() { 226 236 this.childHiveTasks.ItemsAdded += new CollectionItemsChangedEventHandler<IndexedItem<HiveTask>>(OnItemsAdded); 227 237 this.childHiveTasks.ItemsRemoved += new CollectionItemsChangedEventHandler<IndexedItem<HiveTask>>(OnItemsRemoved); 228 238 this.childHiveTasks.CollectionReset += new CollectionItemsChangedEventHandler<IndexedItem<HiveTask>>(OnCollectionReset); 229 239 } 230 protected virtual void DeregisterChildHive JobEvents() {240 protected virtual void DeregisterChildHiveTasksEvents() { 231 241 this.childHiveTasks.ItemsAdded -= new CollectionItemsChangedEventHandler<IndexedItem<HiveTask>>(OnItemsAdded); 232 242 this.childHiveTasks.ItemsRemoved -= new CollectionItemsChangedEventHandler<IndexedItem<HiveTask>>(OnItemsRemoved); … … 332 342 } 333 343 334 private void Register JobEvents() {344 private void RegisterTaskEvents() { 335 345 if (task != null) 336 task.PropertyChanged += new PropertyChangedEventHandler( job_PropertyChanged);337 } 338 339 private void Deregister JobEvents() {346 task.PropertyChanged += new PropertyChangedEventHandler(task_PropertyChanged); 347 } 348 349 private void DeregisterTaskEvents() { 340 350 if (task != null) 341 task.PropertyChanged += new PropertyChangedEventHandler( job_PropertyChanged);342 } 343 344 private void job_PropertyChanged(object sender, PropertyChangedEventArgs e) {351 task.PropertyChanged += new PropertyChangedEventHandler(task_PropertyChanged); 352 } 353 354 private void task_PropertyChanged(object sender, PropertyChangedEventArgs e) { 345 355 if (e.PropertyName == "State") { 346 356 IsFinishedTaskDownloaded = false; … … 516 526 this.ItemTask.Item = null; 517 527 } 528 529 public void Dispose() { 530 DeregisterChildHiveTasksEvents(); 531 DeregisterTaskEvents(); 532 DeregisterItemTaskEvents(); 533 childHiveTasksLock.Dispose(); 534 itemTaskLock.Dispose(); 535 ClearData(); 536 } 518 537 } 519 538
Note: See TracChangeset
for help on using the changeset viewer.