Changeset 15721 for branches/1614_GeneralizedQAP/HeuristicLab.Optimization/3.3/MetaOptimizers/Experiment.cs
- Timestamp:
- 02/04/18 22:33:26 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/1614_GeneralizedQAP/HeuristicLab.Optimization/3.3/MetaOptimizers/Experiment.cs
r15605 r15721 70 70 private TimeSpan executionTime; 71 71 public TimeSpan ExecutionTime { 72 get { return executionTime + Optimizers.Aggregate(TimeSpan.Zero, (a, x) => a + x.ExecutionTime); } 72 get { return executionTime; } 73 private set { 74 executionTime = value; 75 OnExecutionTimeChanged(); 76 } 73 77 } 74 78 … … 278 282 if (handler != null) handler(this, EventArgs.Empty); 279 283 } 280 [Obsolete("deprecated needs to be removed")]281 284 public event EventHandler ExecutionTimeChanged; 285 private void OnExecutionTimeChanged() { 286 EventHandler handler = ExecutionTimeChanged; 287 if (handler != null) handler(this, EventArgs.Empty); 288 } 282 289 public event EventHandler Prepared; 283 290 private void OnPrepared() { … … 362 369 private void RegisterOptimizerEvents(IOptimizer optimizer) { 363 370 optimizer.ExceptionOccurred += new EventHandler<EventArgs<Exception>>(optimizer_ExceptionOccurred); 371 optimizer.ExecutionTimeChanged += new EventHandler(optimizer_ExecutionTimeChanged); 364 372 optimizer.Paused += new EventHandler(optimizer_Paused); 365 373 optimizer.Prepared += new EventHandler(optimizer_Prepared); … … 372 380 private void DeregisterOptimizerEvents(IOptimizer optimizer) { 373 381 optimizer.ExceptionOccurred -= new EventHandler<EventArgs<Exception>>(optimizer_ExceptionOccurred); 382 optimizer.ExecutionTimeChanged -= new EventHandler(optimizer_ExecutionTimeChanged); 374 383 optimizer.Paused -= new EventHandler(optimizer_Paused); 375 384 optimizer.Prepared -= new EventHandler(optimizer_Prepared); … … 386 395 lock (locker) 387 396 OnExceptionOccurred(e.Value); 397 } 398 private void optimizer_ExecutionTimeChanged(object sender, EventArgs e) { 399 // only wait for maximally 100ms to acquire lock, otherwise return and don't update the execution time 400 var success = Monitor.TryEnter(locker, 100); 401 if (!success) return; 402 try { 403 ExecutionTime = Optimizers.Aggregate(TimeSpan.Zero, (t, o) => t + o.ExecutionTime); 404 } finally { 405 Monitor.Exit(locker); 406 } 388 407 } 389 408 private void optimizer_Paused(object sender, EventArgs e) {
Note: See TracChangeset
for help on using the changeset viewer.