- Timestamp:
- 12/19/11 10:48:07 (12 years ago)
- Location:
- branches/SimulationCore/HeuristicLab.SimulationCore/3.3
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/SimulationCore/HeuristicLab.SimulationCore/3.3
- Property svn:ignore
-
old new 3 3 bin 4 4 obj 5 Plugin.cs
-
- Property svn:ignore
-
branches/SimulationCore/HeuristicLab.SimulationCore/3.3/Simulation.cs
r6623 r7204 77 77 } 78 78 79 public override void Start() { 79 private class RunInformation { 80 public CancellationTokenSource CancellationToken { get; set; } 81 public IExecutionContext ExecutionContext { get; set; } 82 } 83 84 public virtual void Start(IExecutionContext executionContext) { 80 85 base.Start(); 86 87 RunInformation runInfo = new RunInformation(); 81 88 cancellationTokenSource = new CancellationTokenSource(); 89 runInfo.CancellationToken = cancellationTokenSource; 90 runInfo.ExecutionContext = executionContext; 82 91 stopPending = false; 83 Task task = Task.Factory.StartNew(Run, cancellationTokenSource.Token, cancellationTokenSource.Token);92 Task task = Task.Factory.StartNew(Run, runInfo, runInfo.CancellationToken.Token); 84 93 task.ContinueWith(t => { 85 94 try { … … 100 109 else OnPaused(); 101 110 }); 111 } 112 113 public override void Start() { 114 Start(null); 102 115 } 103 116 protected override void OnStarted() { … … 131 144 132 145 private void Run(object state) { 133 CancellationToken cancellationToken = (CancellationToken)state;146 RunInformation runInfo = (RunInformation)state; 134 147 135 148 OnStarted(); … … 140 153 timer.Start(); 141 154 try { 142 Run(cancellationToken); 155 foreach (IParameter parameter in Parameters) { 156 parameter.ExecutionContext = runInfo.ExecutionContext; 157 } 158 159 Run(runInfo.CancellationToken.Token); 143 160 } 144 161 finally { … … 146 163 timer.Stop(); 147 164 ExecutionTime += DateTime.Now - lastUpdateTime; 165 166 foreach (IParameter parameter in Parameters) { 167 parameter.ExecutionContext = null; 168 } 148 169 } 149 170 Stop(); 150 171 151 cancellationToken.ThrowIfCancellationRequested();172 runInfo.CancellationToken.Token.ThrowIfCancellationRequested(); 152 173 } 153 174 protected abstract void Run(CancellationToken cancellationToken);
Note: See TracChangeset
for help on using the changeset viewer.