Search code examples
c#wpftiming

A way to get the number of milliseconds in real time passed since the last call of a method


I'm calling an update function to draw a real time simulation and was wondering if there was an effective way to get the number of milliseconds passed since the last update? At the moment I have a DispatchTimer calling at regular intervals to update the simulation but the timing isn't accurate enough and ends up being about 60% slower than it should be (it varies).


Solution

  • I would use Stopwatch.GetTimestamp() to get a tick count, then compare the value before and after. You can convert this to timings by:

    var startTicks = Stopwatch.GetTimestamp();
    // Do stuff
    var ticks = Stopwatch.GetTimestamp() - startTicks;
    
    double seconds = ticks / Stopwatch.Frequency;
    double milliseconds = (ticks / Stopwatch.Frequency) * 1000;
    double nanoseconds = (ticks / Stopwatch.Frequency) * 1000000000;
    

    You could also use var sw = Stopwatch.StartNew(); and sw.Elapsed.TotalMilliseconds afterwards if you just want to time different chunks of code.