Changeset 15603 for branches/GeneralizedQAP/HeuristicLab.Optimization/3.3/MetaOptimizers/Experiment.cs
- Timestamp:
- 01/12/18 13:33:23 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/GeneralizedQAP/HeuristicLab.Optimization/3.3/MetaOptimizers/Experiment.cs
r15339 r15603 70 70 private TimeSpan executionTime; 71 71 public TimeSpan ExecutionTime { 72 get { return executionTime; } 73 private set { 74 executionTime = value; 75 OnExecutionTimeChanged(); 76 } 72 get { return executionTime + Optimizers.Aggregate(TimeSpan.Zero, (a, x) => a + x.ExecutionTime); } 77 73 } 78 74 … … 249 245 if (handler != null) handler(this, EventArgs.Empty); 250 246 } 247 [Obsolete("deprecated needs to be removed")] 251 248 public event EventHandler ExecutionTimeChanged; 252 private void OnExecutionTimeChanged() {253 EventHandler handler = ExecutionTimeChanged;254 if (handler != null) handler(this, EventArgs.Empty);255 }256 249 public event EventHandler Prepared; 257 250 private void OnPrepared() { … … 334 327 private void RegisterOptimizerEvents(IOptimizer optimizer) { 335 328 optimizer.ExceptionOccurred += new EventHandler<EventArgs<Exception>>(optimizer_ExceptionOccurred); 336 optimizer.ExecutionTimeChanged += new EventHandler(optimizer_ExecutionTimeChanged);337 329 optimizer.Paused += new EventHandler(optimizer_Paused); 338 330 optimizer.Prepared += new EventHandler(optimizer_Prepared); … … 345 337 private void DeregisterOptimizerEvents(IOptimizer optimizer) { 346 338 optimizer.ExceptionOccurred -= new EventHandler<EventArgs<Exception>>(optimizer_ExceptionOccurred); 347 optimizer.ExecutionTimeChanged -= new EventHandler(optimizer_ExecutionTimeChanged);348 339 optimizer.Paused -= new EventHandler(optimizer_Paused); 349 340 optimizer.Prepared -= new EventHandler(optimizer_Prepared); … … 360 351 lock (locker) 361 352 OnExceptionOccurred(e.Value); 362 }363 private void optimizer_ExecutionTimeChanged(object sender, EventArgs e) {364 // only wait for maximally 100ms to acquire lock, otherwise return and don't update the execution time365 var success = Monitor.TryEnter(locker, 100);366 if (!success) return;367 try {368 ExecutionTime = Optimizers.Aggregate(TimeSpan.Zero, (t, o) => t + o.ExecutionTime);369 } finally {370 Monitor.Exit(locker);371 }372 353 } 373 354 private void optimizer_Paused(object sender, EventArgs e) {
Note: See TracChangeset
for help on using the changeset viewer.