RaspberryIO_26/Swan.Lite/Diagnostics/HighResolutionTimer.cs
2019-12-04 18:57:18 +01:00

33 lines
1.0 KiB
C#

namespace Swan.Diagnostics
{
using System;
using System.Diagnostics;
/// <summary>
/// Provides access to a high-resolution, time measuring device.
/// </summary>
/// <seealso cref="Stopwatch" />
public class HighResolutionTimer : Stopwatch
{
/// <summary>
/// Initializes a new instance of the <see cref="HighResolutionTimer"/> class.
/// </summary>
/// <exception cref="NotSupportedException">High-resolution timer not available.</exception>
public HighResolutionTimer()
{
if (!IsHighResolution)
throw new NotSupportedException("High-resolution timer not available");
}
/// <summary>
/// Gets the number of microseconds per timer tick.
/// </summary>
public static double MicrosecondsPerTick { get; } = 1000000d / Frequency;
/// <summary>
/// Gets the elapsed microseconds.
/// </summary>
public long ElapsedMicroseconds => (long)(ElapsedTicks * MicrosecondsPerTick);
}
}