Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/04/18 22:33:26 (6 years ago)
Author:
abeham
Message:

#1614:

  • reverted r15603 by reverse merging
  • added expert system plugins from #2457
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/1614_GeneralizedQAP/HeuristicLab.Optimization/3.3/MetaOptimizers/Experiment.cs

    r15605 r15721  
    7070    private TimeSpan executionTime;
    7171    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      }
    7377    }
    7478
     
    278282      if (handler != null) handler(this, EventArgs.Empty);
    279283    }
    280     [Obsolete("deprecated needs to be removed")]
    281284    public event EventHandler ExecutionTimeChanged;
     285    private void OnExecutionTimeChanged() {
     286      EventHandler handler = ExecutionTimeChanged;
     287      if (handler != null) handler(this, EventArgs.Empty);
     288    }
    282289    public event EventHandler Prepared;
    283290    private void OnPrepared() {
     
    362369    private void RegisterOptimizerEvents(IOptimizer optimizer) {
    363370      optimizer.ExceptionOccurred += new EventHandler<EventArgs<Exception>>(optimizer_ExceptionOccurred);
     371      optimizer.ExecutionTimeChanged += new EventHandler(optimizer_ExecutionTimeChanged);
    364372      optimizer.Paused += new EventHandler(optimizer_Paused);
    365373      optimizer.Prepared += new EventHandler(optimizer_Prepared);
     
    372380    private void DeregisterOptimizerEvents(IOptimizer optimizer) {
    373381      optimizer.ExceptionOccurred -= new EventHandler<EventArgs<Exception>>(optimizer_ExceptionOccurred);
     382      optimizer.ExecutionTimeChanged -= new EventHandler(optimizer_ExecutionTimeChanged);
    374383      optimizer.Paused -= new EventHandler(optimizer_Paused);
    375384      optimizer.Prepared -= new EventHandler(optimizer_Prepared);
     
    386395      lock (locker)
    387396        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      }
    388407    }
    389408    private void optimizer_Paused(object sender, EventArgs e) {
Note: See TracChangeset for help on using the changeset viewer.