TizzyT

StopWatch -TizzyT

Sep 21st, 2017
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VB.NET 3.48 KB | None | 0 0
  1. 'Stopwatch with precision
  2.  
  3. Public Class StopWatch
  4.     Public Shared ReadOnly Frequency As Decimal = Diagnostics.Stopwatch.Frequency
  5.  
  6.     Private _Running As Boolean
  7.     Private _Start, _End As ULong
  8.  
  9.     Public Shared Function StartNew() As StopWatch
  10.         Return New StopWatch(True)
  11.     End Function
  12.  
  13.     Public Sub New() : End Sub
  14.     Private Sub New(ByVal Start As Boolean)
  15.         _Start = Diagnostics.Stopwatch.GetTimestamp
  16.         _Running = True
  17.     End Sub
  18.  
  19.     Public ReadOnly Property IsRunning() As Boolean
  20.         Get
  21.             Return _Running
  22.         End Get
  23.     End Property
  24.  
  25.     Public ReadOnly Property Elapsed() As TimeSpan
  26.         Get
  27.             If _Running Then Return New TimeSpan(Diagnostics.Stopwatch.GetTimestamp - _Start)
  28.             Return New TimeSpan(_End - _Start)
  29.         End Get
  30.     End Property
  31.  
  32.     Public ReadOnly Property ElapsedDays() As Decimal
  33.         Get
  34.             If _Running Then Return (Diagnostics.Stopwatch.GetTimestamp - _Start) / (Frequency * 86400D)
  35.             Return (_End - _Start) / (Frequency * 86400D)
  36.         End Get
  37.     End Property
  38.  
  39.     Public ReadOnly Property ElapsedHours() As Decimal
  40.         Get
  41.             If _Running Then Return (Diagnostics.Stopwatch.GetTimestamp - _Start) / (Frequency * 3600D)
  42.             Return (_End - _Start) / (Frequency * 3600D)
  43.         End Get
  44.     End Property
  45.  
  46.     Public ReadOnly Property ElapsedMinutes() As Decimal
  47.         Get
  48.             If _Running Then Return (Diagnostics.Stopwatch.GetTimestamp - _Start) / (Frequency * 60D)
  49.             Return (_End - _Start) / (Frequency * 60D)
  50.         End Get
  51.     End Property
  52.  
  53.     Public ReadOnly Property ElapsedSeconds() As Decimal
  54.         Get
  55.             If _Running Then Return (Diagnostics.Stopwatch.GetTimestamp - _Start) / Frequency
  56.             Return (_End - _Start) / Frequency
  57.         End Get
  58.     End Property
  59.  
  60.     Public ReadOnly Property ElapsedMilliseconds() As Decimal
  61.         Get
  62.             If _Running Then Return (Diagnostics.Stopwatch.GetTimestamp - _Start) / (Frequency / 1000D)
  63.             Return (_End - _Start) / (Frequency / 1000D)
  64.         End Get
  65.     End Property
  66.  
  67.     Public ReadOnly Property ElapsedMicroseconds() As Decimal
  68.         Get
  69.             If _Running Then Return (Diagnostics.Stopwatch.GetTimestamp - _Start) / (Frequency / 1000000D)
  70.             Return (_End - _Start) / (Frequency / 1000000D)
  71.         End Get
  72.     End Property
  73.  
  74.     Public ReadOnly Property ElapsedNanoseconds() As Decimal
  75.         Get
  76.             If _Running Then Return (Diagnostics.Stopwatch.GetTimestamp - _Start) / (Frequency / 1000000000D)
  77.             Return (_End - _Start) / (Frequency / 1000000000D)
  78.         End Get
  79.     End Property
  80.  
  81.     Public ReadOnly Property ElapsedTicks() As Long
  82.         Get
  83.             If _Running Then Return (Diagnostics.Stopwatch.GetTimestamp - _Start)
  84.             Return (_End - _Start)
  85.         End Get
  86.     End Property
  87.  
  88.     Public Sub Start()
  89.         If Not _Running Then
  90.             _Start = Diagnostics.Stopwatch.GetTimestamp - (_End - _Start)
  91.             _Running = True
  92.         End If
  93.     End Sub
  94.  
  95.     Public Sub [Stop]()
  96.         If _Running Then
  97.             _End = Diagnostics.Stopwatch.GetTimestamp
  98.             _Running = False
  99.         End If
  100.     End Sub
  101.  
  102.     Public Sub Reset()
  103.         _Start = Diagnostics.Stopwatch.GetTimestamp
  104.     End Sub
  105.  
  106.     Public Sub Restart()
  107.         _Start = Diagnostics.Stopwatch.GetTimestamp
  108.         _Running = True
  109.     End Sub
  110. End Class
Add Comment
Please, Sign In to add comment