Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
08/17/17 15:47:54 (7 years ago)
Author:
abeham
Message:

#2457: merged trunk into branch

Location:
branches/PerformanceComparison/HeuristicLab.Optimization
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/PerformanceComparison/HeuristicLab.Optimization

  • branches/PerformanceComparison/HeuristicLab.Optimization/3.3/Algorithms/BasicAlgorithm.cs

    r14600 r15330  
    2121
    2222using System;
     23using System.Linq;
    2324using System.Threading;
    24 using System.Threading.Tasks;
    2525using HeuristicLab.Common;
    2626using HeuristicLab.Core;
     
    5757      : base(original, cloner) {
    5858      results = cloner.Clone(original.Results);
     59      initialized = original.initialized;
    5960    }
    6061    protected BasicAlgorithm()
     
    7172    }
    7273
    73     public override void Start() {
    74       base.Start();
    75       CancellationTokenSource = new CancellationTokenSource();
     74    public override void Start(CancellationToken cancellationToken) {
     75      base.Start(cancellationToken);
     76      CancellationTokenSource = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken);
    7677      pausePending = false;
    7778      OnStarted();
    7879
    79       Task task = Task.Factory.StartNew(Run, CancellationTokenSource.Token, CancellationTokenSource.Token);
    80       task.ContinueWith(t => {
    81         try {
    82           t.Wait();
    83         }
    84         catch (AggregateException ex) {
    85           try {
    86             ex.Flatten().Handle(x => x is OperationCanceledException);
    87           }
    88           catch (AggregateException remaining) {
    89             if (remaining.InnerExceptions.Count == 1) OnExceptionOccurred(remaining.InnerExceptions[0]);
    90             else OnExceptionOccurred(remaining);
    91           }
    92         }
    93         CancellationTokenSource.Dispose();
    94         CancellationTokenSource = null;
    95         if (pausePending) OnPaused();
    96         else OnStopped();
    97       });
     80      try {
     81        Run((object)cancellationTokenSource.Token);
     82      }
     83      catch (OperationCanceledException) {
     84      }
     85      catch (AggregateException ae) {
     86        OnExceptionOccurred(ae.InnerExceptions.SingleOrDefault() ?? ae);
     87      }
     88      catch (Exception e) {
     89        OnExceptionOccurred(e);
     90      }
     91
     92      CancellationTokenSource.Dispose();
     93      CancellationTokenSource = null;
     94      if (pausePending) OnPaused();
     95      else OnStopped();
    9896    }
    9997
Note: See TracChangeset for help on using the changeset viewer.