Changeset 15330 for branches/PerformanceComparison/HeuristicLab.Optimization/3.3/Algorithms/BasicAlgorithm.cs
- Timestamp:
- 08/17/17 15:47:54 (7 years ago)
- Location:
- branches/PerformanceComparison/HeuristicLab.Optimization
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/PerformanceComparison/HeuristicLab.Optimization
- Property svn:mergeinfo changed
/branches/Async/HeuristicLab.Optimization (added) merged: 13349,13354,13401,15065,15215,15232,15280-15281,15284 /trunk/sources/HeuristicLab.Optimization merged: 15287,15302,15327
- Property svn:mergeinfo changed
-
branches/PerformanceComparison/HeuristicLab.Optimization/3.3/Algorithms/BasicAlgorithm.cs
r14600 r15330 21 21 22 22 using System; 23 using System.Linq; 23 24 using System.Threading; 24 using System.Threading.Tasks;25 25 using HeuristicLab.Common; 26 26 using HeuristicLab.Core; … … 57 57 : base(original, cloner) { 58 58 results = cloner.Clone(original.Results); 59 initialized = original.initialized; 59 60 } 60 61 protected BasicAlgorithm() … … 71 72 } 72 73 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); 76 77 pausePending = false; 77 78 OnStarted(); 78 79 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(); 98 96 } 99 97
Note: See TracChangeset
for help on using the changeset viewer.