Free cookie consent management tool by TermsFeed Policy Generator

Changeset 693


Ignore:
Timestamp:
10/19/08 01:06:28 (16 years ago)
Author:
gkronber
Message:

implemented fix for #314 (Stopwatch operators calculate incorrect values for ElapsedSeconds)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Operators.Stopwatch/Stopwatch.cs

    r445 r693  
    3131  public class Stopwatch : ItemBase {
    3232    private System.Diagnostics.Stopwatch stopwatch;
    33     private long elapsedTicks;
     33    private TimeSpan elapsedTime;
    3434    private bool running;
    3535
    3636    public Stopwatch() {
    3737      stopwatch = new System.Diagnostics.Stopwatch();
    38       elapsedTicks = 0;
     38      elapsedTime = new TimeSpan(0L);
    3939      running = false;
    4040    }
     
    4747    public void Stop() {
    4848      stopwatch.Stop();
    49       elapsedTicks = stopwatch.ElapsedTicks;
     49      elapsedTime += stopwatch.Elapsed;
    5050      stopwatch.Reset();
    5151      running = false;
    5252    }
    5353
    54     public long ElapsedTicks {
    55       get {
    56         return elapsedTicks + stopwatch.ElapsedTicks;
    57       }
    58     }
    59 
    6054    public TimeSpan Elapsed {
    6155      get {
    62         return TimeSpan.FromTicks(elapsedTicks).Add(stopwatch.Elapsed);
     56        return elapsedTime + stopwatch.Elapsed;
    6357      }
    6458    }
     
    6761      Stopwatch clone = (Stopwatch)base.Clone(clonedObjects);
    6862      if(running) clone.Start();
    69       clone.elapsedTicks = elapsedTicks;
     63      clone.elapsedTime = elapsedTime;
    7064      return clone;
    7165    }
     
    7771      node.Attributes.Append(runningAttr);
    7872      XmlAttribute elapsedTicksAttr = document.CreateAttribute("ElapsedTicks");
    79       elapsedTicksAttr.Value = elapsedTicks.ToString();
     73      elapsedTicksAttr.Value = elapsedTime.Ticks.ToString();
    8074      node.Attributes.Append(elapsedTicksAttr);
    8175      return node;
    8276    }
    8377    public override void Populate(XmlNode node, IDictionary<Guid,IStorable> restoredObjects) {
    84       elapsedTicks = long.Parse(node.Attributes["ElapsedTicks"].Value);
     78      long elapsedTicks = long.Parse(node.Attributes["ElapsedTicks"].Value);
     79      elapsedTime = TimeSpan.FromTicks(elapsedTicks);
    8580      running = bool.Parse(node.Attributes["Running"].Value);
    8681      if(running) stopwatch.Start();
Note: See TracChangeset for help on using the changeset viewer.